c++ - 如何将 cmd 命令输出传递给 QMake 中的#DEFINE MACRO

标签 c++ svn qmake

我在我的“.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() 结果传递给编译器。没有它你将得到两个参数而不是一个 "Unknownversion"

双引号 \\\" 是传值给预处理器。没有它,值将不带引号并被识别为 int。\\\" 将被解析通过 qmake 作为 \" 传递给编译器。

关于c++ - 如何将 cmd 命令输出传递给 QMake 中的#DEFINE MACRO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837185/

相关文章:

java - SVN 忽略仅低于一级目录的某些文件

qt-creator - 如何让 QMake 仅在更新大型数据文件时复制它们

c++ - 是否可以在父子目录项目中修改 QT qmake 变量?

macos - 如何在 qmake (QtCreator) 中指定 Mac 平台

c++ - QTreeWidgetItem 中的 QWidget 在重新排序 QTreeWidgetItem 后消失

c++ - 在 clang 和 gcc 中移动可分配的 lambda

C++ 文件输入循环有困难吗?

c++ - 使用类的链表

eclipse - SVN 更新到 head 与同步到存储库有什么区别?

安装颠覆性插件后 eclipse (ADT) 主题损坏