我补充道
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)
| 归档时间: |
|
| 查看次数: |
17985 次 |
| 最近记录: |