当前位置:软件学习 > 其它软件 >>

qmake prl TEMPLATE=subdir之错误小记

最近,在使用qmake,prl和TEMPLATE=subdir时犯了一个错误。记录之以便以后查看。
项目结构:
 
1. project.pro
2. main\
3.     \__ main.pro
4. lib\
5.     \__ lib.pro
    project.pro中写的是:
  
1. TEMPLATE  = subdirs
2. SUBDIRS = main lib
3. main.depends = lib
    main.pro中有一句:
 
1. CONFIG += link_prl
    lib.pro中有一句:
 
1. CONFIG += create_prl
    错误的现象是:
1、lib的prl文件及动态库生成成功。
2、main工程没有读取prl中的内容。
 
    起初,我以为是链接期ld的问题,后来经过实践,排除了这个可能。
    最终,我在Makefile中发现了奇怪的东西。是project.pro对应的Makefile文件:
 
1. sub-main: main/$(MAKEFILE) sub-lib
2.     cd main/ && $(MAKE) -f $(MAKEFILE)
    也就是说,
事实一:main先从main.pro生成自己的Makefile,再make sub-lib目标。
    同时,我们知道
事实二:prl是在qmake阶段进行读取的
    因此,我们得出:
推论一:当进行main的qmake时,lib目标产生的prl文件和动态库文件尚未生成。这必然导致main中无法读取lib产生的prl文件。
    最终的解决办法,其实很无奈,将project.pro中main和lib的顺序反过来,再编译,一切正常。

 

摘自 elephant_liu
补充:软件开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,