• 【Qt】make 文件 .cpp文件 .pro文件跟带UI的.pro文件


    文本程序到可执行文件生成无论在什么平台大致分为以下几个部分: 
      1.用编辑器编写源代码,如.c文件。 
      2.用编译器编译代码生成目标文件,如.o。 
      3.用链接器连接目标代码生成可执行文件,如.exe。 
      Linux平台下,.o文件一般是通过编译的但还未链接的目标文件,.out文件一般都是经过相应的链接产生的可执行文件(linux下)。当然这是一般情况下人们这么设置,而真正的,在linux中 .o通常保存的是可执行代码 ,至于可执行文件则没有规定扩展名,用的是文件属性位来决定的是否可执行。在chmod中设置。 
      我们知道编译和链接阶段是靠g++和gcc编辑器来完成,这两个编译阶段是相同的,但是链接阶段g++默认链接c++库,所以一般情况下用gcc编译c文件,而g++编译cpp文件。当然g++也可以编译c文件,而gcc编译cpp文件则需要在后面加上参数-lstdc++,作用就是链接c++库。 
      但是如果编译和链接的阶段如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。 
      对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。

       CMakeLists.txt文件 -->cmake工具 ->生成Makefile文件 ->用make来操作Makefile文件
    针对CMakeLists.txt文件  cmake  生成Makefile文件、
    针对Makefile文件  make 来整体编译文件类似多次执行g++

      原文件—cmakelist —cmake —makefile —make —生成可执行文件(make中则包含了多条链接以及gcc/g++编译语句)。 

    当我们通过终端vi 创建一个.cpp文件时 我们直接进行

    1.直接g++ -c  tree.cpp 然后 g++  tree.o -o Tree 生成可执行的 Tree 可执行文件   多个tree.o 中间文件

    2.直接g++ tree.cpp 生成为默认的a.out可执行文件    

    3.直接g++ tree.cpp -o Tree  生成Tree可执行文件

          当我们通过Qt  pro建立一个无UI的程序时,自动搜集文件需要信息生成Makefile文件由于Qt 中信号和槽slots /signals/Q_OBJECT 的存在 含Q_OBJECT的.h 文件 对应的.cpp文件 在经过Qt pro编辑生成Debug版时会自动生成moc_XXX.cpp文件   如所建项目名称为abc

    当我们通过Qt pro 建立一个带UI的程序时 程序含有Q_OBJECT  .h文件会多余生成ui_XXX.h文件 比如建立一个ABC

      如果pro中加入了RESOURCES += ../qss/qresource.qrc   

    会在Debug版多生成两个文件qrc_qresource.cpp   qrc_qresource.o 文件 最终也会汇总到     Makefile文件中

          Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

    关注公众号 海量干货等你
  • 相关阅读:
    (转)Nginx配置和内核优化 实现突破十万并发
    (转)资源监控工具Spotlight监测LINUX
    (转) linux I/O优化 磁盘读写参数设置
    (转)MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode
    (转)mongdb性能优化收集
    (转)部署MongoDB时需要注意的调参
    (转)Loadrunner监控Linux的17个指标
    (转)linux 内存管理——内核的shmall 和shmmax 参数
    (转)Linux性能调优之虚拟内存篇
    (转)LR监控Linux系统性能计数器详解
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734441.html
Copyright © 2020-2023  润新知