如何在qmake中引用源目录?

Vi.*_*Vi. 9 qmake

我补充道

version.target = version.h
version.commands = bash generate-version.sh

QMAKE_EXTRA_TARGETS += version

PRE_TARGETDEPS += version.h
Run Code Online (Sandbox Code Playgroud)

到项目,但它尝试在目标目录中运行"generate-version.sh":

make: Leaving directory `.../qqq-build-desktop'
make: Entering directory `.../qqq-build-desktop'
Makefile:236: warning: overriding commands for target `version.h'
Makefile:233: warning: ignoring old commands for target `version.h'
bash generate-version.sh
bash: generate-version.sh: No such file or directory
make: Leaving directory `.../qqq-build-desktop'
Run Code Online (Sandbox Code Playgroud)

还有$$ DESTDIR,但我看不到$$ SRCDIR.如何在qmake中引用项目目录(或如何重写这个)?

jwe*_*rny 12

我的第一个想法是尝试重写

version.commands = bash generate-version.sh
Run Code Online (Sandbox Code Playgroud)

这样就不必调用shell脚本了.也许您可以将所有语句组合成一行:

version.commands = echo \'char VERSION[]=\"1.0\";\' > version.h && ls && echo Done
Run Code Online (Sandbox Code Playgroud)

如果您不习惯调用脚本,可能是您正在寻找的PWD或OUT_PWD.来自qmake变量参考

PWD

此变量包含指向qmake项目文件(project.pro)所在目录的完整路径.

OUT_PWD

此变量包含通向qmake放置生成的Makefile的目录的完整路径.

文档中未提及的一个警告是,如果您正在执行递归qmake,则PWD指的是读取顶级.pro文件的位置.因此,如果从{proj-root}运行qmake -r,当最后读入sub/sub/sub/dir-proj.pro时,PWD仍将指向{proj-root}.

假设generate-version.sh与顶级.pro文件位于同一目录中,您可以尝试:

version.commands = bash $$PWD/generate-version.sh
Run Code Online (Sandbox Code Playgroud)