Thi*_* D. 9 qt qmake qt-creator
我正在尝试使用SUBDIR qmake项目和相关子目录:
TEMPLATE = subdirs
SUBDIRS = app ../lib1
Run Code Online (Sandbox Code Playgroud)
当QT创建者使用"shadow build"构建这个项目时,这意味着在另一个目录中,它以这种方式放置文件的输出:
Shadow-Build-Directory/
app/
main.obj
...
Run Code Online (Sandbox Code Playgroud)
问题是因为我的subdir是相对的,它使用相同的输出相对路径,试图把lib1内置Shadow-Build-Directory/../lib1!
我怎么能避免这个?
谢谢.
编辑:我正在使用最新的Qt 5.5.
新答案:我做了一些测试,在根项目之外似乎对 qmake 来说是一个大问题: $$shadowed() 不返回任何内容(如在源树之外的文档中所述),出于同样的原因,根项目目录中的 .qmake.conf (未记录的功能)未加载到 lib1 项目中。
我认为解决你的问题的方法是将 lib1 作为一个独立的项目,一劳永逸地构建库。然后在每个项目中包含对 lib1 的二进制文件和标头的引用。
它甚至可以通过 qmake 功能实现自动化:在每个项目中,您给出 lib1 正确编写的功能的路径,然后添加
CONFIG += lib1
Run Code Online (Sandbox Code Playgroud)
会自动为您的项目配置包含路径和链接指令。
旧答案: 现在无法尝试,但我想是这样
DESTDIR = $$shadowed($$PWD)/lib1
Run Code Online (Sandbox Code Playgroud)
lib.pro 文件中的内容应该可以解决您的问题。