如何从Qt项目文件中引用Qt Creator当前构建目录?

时间:2013-09-17 22:13:33

标签: qt qmake

Qt Creator是否设置了一个qmake变量,其中包含可以从Qt项目文件中引用的构建目录?

Qt Creator默认构建目录:

../build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}

我的目标是使用QMAKE_POST_LINK从构建输出中复制dll的import lib,以便我的客户端项目更容易链接。如果我硬编码导入库的路径,QMAKE_POST_LINK可以正常工作。

例如:

QMAKE_POST_LINK = copy C:\projects\ICP\sw\icpts\sandbox\configurable-system-test-io\build-lib-configurable-system-test-io-Desktop_Qt_5_1_0_MSVC2012_32bit_eb09a8-Debug\debug\*.lib  ..\my-lib

解决方案: fbucek使用$$ OUT_DIR提供的解决方案解决了我的问题。谢谢!

  • 在Windows下,您必须在QMAKE_POST_LINK中使用$$ shell_path($$ OUT_PWD)将Unix'/'路径字符转换为Windows'\'路径字符。
  • 要向QMAKE_POST_LINK添加多个命令,请在$$ quote()中附加附加的$$ escape_expand(\ n)。

多个QMAKE_POST_LINK命令的示例:

QMAKE_POST_LINK += $$quote(copy /Y $$shell_path($$OUT_PWD)\debug\*.dll  ..\lib$$escape_expand(\\n))
QMAKE_POST_LINK += $$quote(copy /Y $$shell_path($$OUT_PWD)\debug\*.lib  ..\lib$$escape_expand(\\n))
QMAKE_POST_LINK += $$quote(copy /Y $$shell_path($$OUT_PWD)\debug\*.pdb  ..\lib$$escape_expand(\\n))

再次感谢$$ OUT_PWD!

-Ed

  • Qt Creator 2.7.2
  • Qt 5.1
  • Microsoft VS 2012
  • Windows 7

1 个答案:

答案 0 :(得分:12)

是的

将其放入专业版文件中,运行qmake并检查它是否显示您想要的内容

message($$OUT_PWD)

Qmake Variable Reference OUT_PWD

然后你可以像这样使用它:(我希望 - 没有经过测试)

QMAKE_POST_LINK = copy $$OUT_PWD\debug\*.lib  ..\my-lib