我在我的“.pro”文件中添加了一个新的#DEFINE
,如下所示:
#DEFINE += SVN_V
现在我想将命令“svnversion -n”的输出传递给这个 SVN_V
,这是我所做的:
#DEFINE += "SVN_V = svnversion -n"
但是结果是
error: no such file or directory
error: svnversion: no such file or directory
那么,我到底错过了什么? (请注意,我正在使用 Linux Ubuntu)
最佳答案
可能是这样的:
DEFINES += "SVN_V=\"\\\"$$system(svnversion -n)\\\"\""
$$system()
是一个执行系统命令并从中获取输出的 qmake 函数。
SVN_V 周围的外部引号... - 用于 qmake - 它必须理解这是一个单一的定义。如果 $$system()
返回空格分隔的字符串“Unknown version”,您将得到结果:-DSVN="Unknown -Dversion"
。
下一个引号 \"
- 将 $$system()
结果传递给编译器。没有它你将得到两个参数而不是一个 "Unknown
和 version"
。
双引号 \\\"
是传值给预处理器。没有它,值将不带引号并被识别为 int。\\\"
将被解析通过 qmake 作为 \"
传递给编译器。
关于c++ - 如何将 cmd 命令输出传递给 QMake 中的#DEFINE MACRO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837185/