最近,在使用qmake,prl和TEMPLATE=subdir时犯了一个错误。记录之以便以后查看。
项目结构:
- project.pro
- main\
- \__ main.pro
- lib\
- \__ lib.pro
project.pro中写的是:
- TEMPLATE = subdirs
- SUBDIRS = main lib
- main.depends = lib
main.pro中有一句:
- CONFIG += link_prl
lib.pro中有一句:
- CONFIG += create_prl
错误的现象是:
1、lib的prl文件及动态库生成成功。
2、main工程没有读取prl中的内容。
起初,我以为是链接期ld的问题,后来经过实践,排除了这个可能。
最终,我在Makefile中发现了奇怪的东西。是project.pro对应的Makefile文件:
- sub-main: main/$(MAKEFILE) sub-lib
- cd main/ && $(MAKE) -f $(MAKEFILE)
也就是说,
事实一:main先从main.pro生成自己的Makefile,再make sub-lib目标。 |
同时,我们知道
因此,我们得出:
推论一:当进行main的qmake时,lib目标产生的prl文件和动态库文件尚未生成。这必然导致main中无法读取lib产生的prl文件。 |
最终的解决办法,其实很无奈,将project.pro中main和lib的顺序反过来,再编译,一切正常。
转载于:https://blog.51cto.com/elephantliu/835870
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)