我试图将SUBDIR qmake项目与相关子目录一起使用:
TEMPLATE = subdirs
SUBDIRS = app ../lib1
当QT创建者使用" shadow build"构建此项目时,这意味着在另一个目录中,它以这种方式放置文件的输出:
Shadow-Build-Directory/
app/
main.obj
...
问题是因为我的subdir是相对的,它使用相同的输出相对路径,试图将 lib1 构建在Shadow-Build-Directory/../lib1
中!
我该如何避免这种情况?
谢谢。
编辑:我使用的是最新的Qt 5.5。
答案 0 :(得分:0)
新答案:我做了一些测试,并且在根项目之外似乎是qmake的一个大问题:$$ shadowed()不返回任何内容(如文档中所述,不在源代码树),由于同样的原因,根项目目录中的.qmake.conf(未记录的功能)未在lib1项目中加载。
我认为解决问题的方法是将lib1保留为独立项目,一劳永逸地构建库。然后在每个项目中包含对lib1的二进制文件和标题的引用。
甚至可以使用qmake功能实现自动化: 在每个项目中,您都要给出lib1正确编写的功能的路径,然后添加
CONFIG += lib1
会自动为您的项目配置包含路径和链接指令。
旧答案: 现在不能尝试,但我猜是
DESTDIR = $$shadowed($$PWD)/lib1
lib.pro文件中的可以解决您的问题。