QT集成开发环境的编译


  年纪大了,总容易忘记东西,记录下来以后忘记的时候可以查看


1  父工程编译子工程

    TEMPLATE = subdirs


   SUBDIRS += \

     ....  这是子工程的工程文件目录


这样可以一次性编译N个工程.


2 编译工程

   TARGET = name (模块名称)

   TEMPLATE = lib  (模块类型,是库还是程序) TEMPLATE = app 则是程序
   #CONFIG += staticlib   (静态库还是)
   CONFIG -= qt               (不要包含qt)


DEFINES += WEBRTC_POSIX GPAC_CONFIG_LINUX 类似宏定义吧

 

  安装在指定的路径,这个路径也是以工程目录为当前目录参考的,把编译出来的模块放在这个目录里面,但是在工程里面要配置make参数为install才会执行这个

  target.path = ../../../../../nfsroot
  INSTALLS += target

  hisi平台要求的
  QMAKE_CFLAGS += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16
 QMAKE_CXXFLAGS += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16

 

   下面俩都是以工程文件的根目录为当前路径参考

  INCLUDEPATH += \  (头文件路径)

  SOURCES += \ (源文件)

  如果只是编译一个库模块,则不用加载库文件,只需要把相应的库文件的头文件  INCLUDEPATH进来,能编译过就行了

  如果是程序模块,就需要把库文件包含进去 ,最终链接成可执行的程序,所以其中如果有库依赖与别的库,则不用在库里面依赖别的库,在最终编译的程序里面导入库就好


LIBS += \
    -L../../../libs/armv7-linux  -lxxx  \ (xxx不要包含lib直接加模块名称就好了 比如-ltest 加载的是libtest这个库)
    -lpthread -lrt  这种是加载动态库,  如果加载静态库的话,可以这样 -ltest.a  或者把所有的库加载写完后,最后-static


库的加载是相对于程序的输出目录里面生成的那个makefile文件的,这个要记住


这里是配置Release版本的程序输出目录 ,编译后生成的makefile文件 编译后的目标文件以及最终的模块文件也会放那里,所以工程里面有引用库的地方,都是要参考这个目录去设置库的路径,这个和其它两个不同哦.另外,这里也配置了make install这个编译步骤吧,把最终生成的文件安装在我们在工程里面指定的目录.


我的个人理解,qt工程文件里面配置编译脚本最后还是要生成真正的makefile编译脚本,qt的工程只是辅助生成makefile文件的中间过程,在编译本模块的时候的include和source都是参考工程目录,而真正链接库的时候却是参考makefile文件的目录去链接,最终在makefile当前目录输出真正的模块文件,这是我个人的理解,没有百分百的把握,希望读者及时指正.


总结一下涉及到的三个路径, 1 inluce source路径,都是相对于工程目录的; 2 install也是相对于工程目录的3 库是相对于makefile文件目录的,也就是在工程里面配置程序的那个输出目录,如上图所示的.


基本上qt编译的大概流程就在这里了,可能还有细节的地方各位自行补充



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值