如何使用相对子目录构建阴影?

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.

Try*_*yum 0

新答案:我做了一些测试,在根项目之外似乎对 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 文件中的内容应该可以解决您的问题。

  • 即使这不是完美的答案,我也会因为您的回复而给予您赏金。谢谢 :-) (2认同)