如何在QMake中将cmd命令输出传递给#DEFINE MACRO

时间:2013-04-05 14:59:33

标签: c++ svn qmake

我在我的“.pro”文件中添加了一个新的#DEFINE,如下所示:

#DEFINE += SVN_V

现在我想将命令“svnversion -n”的输出传递给此SVN_V,这就是我所做的:

#DEFINE += "SVN_V = svnversion -n"

但结果是

  

错误:没有这样的文件或目录

     

错误:svnversion:没有这样的文件或目录

所以,我到底错过了什么? (请注意我正在使用Linux Ubuntu)

2 个答案:

答案 0 :(得分:7)

可能是这样的:

DEFINES += "SVN_V=\"\\\"$$system(svnversion -n)\\\"\""

$$system()是一个qmake函数,用于执行系统命令并从中获取输出。

SVN_V周围的外部引号... - 用于qmake - 它必须明白这是一个单一的定义。如果$$system()返回空格分隔字符串“未知版本”,您将获得结果:-DSVN="Unknown -Dversion"

接下来引用\" - 将$$system()结果传递给编译器。没有它,您将获得两个参数,而不是一个"Unknownversion"

双引号\\\"是将值传递给预处理程序。没有它,值将没有引号并被识别为int。 \\\"将由qmake解析为\"并传递给编译器。

答案 1 :(得分:0)

我在桌子上的分数: svn信息--show-item修订