我#DEFINE在我的".pro"文件中添加了一个新内容,如下所示:
#DEFINE += SVN_V
Run Code Online (Sandbox Code Playgroud)
现在我想将命令"svnversion -n"的输出传递给它SVN_V,这就是我所做的:
#DEFINE += "SVN_V = svnversion -n"
Run Code Online (Sandbox Code Playgroud)
但结果是
错误:没有这样的文件或目录
错误:svnversion:没有这样的文件或目录
所以,我到底错过了什么?(请注意我正在使用Linux Ubuntu)
它可能是这样的:
DEFINES += "SVN_V=\"\\\"$$system(svnversion -n)\\\"\""
Run Code Online (Sandbox Code Playgroud)
$$system() 是一个qmake函数,用于执行系统命令并从中获取输出.
SVN_V周围的外部引号... - 用于qmake - 它必须理解这是一个单一的定义.如果$$system()返回空格分隔字符串"未知版本",您将获得结果:-DSVN="Unknown -Dversion".
下一个引号\"- 将$$system()结果传递给编译器.没有它你会得到两个参数而不是一个"Unknown和version".
双引号\\\"是将值传递给预处理器.没有它,值将没有引号并被识别为int.\\\"将由qmake解析\"并传递给编译器.