Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cmake类似于qmake字符串文字_C++_Qt_Cmake_Qmake - Fatal编程技术网

C++ cmake类似于qmake字符串文字

C++ cmake类似于qmake字符串文字,c++,qt,cmake,qmake,C++,Qt,Cmake,Qmake,qmake项目中有一个.pri,其中包含一些全局字符串定义: STR1 = string literal 1 STR2 = string literal 2 GIT_VERSION = $$system($$ENV_GIT_EXE_PATH describe --long) 这些字符串在代码中使用: QString str1 = QStringLiteral(STR1); QString str2 = QStringLiteral(STR2); QString str3 = QStringLi

qmake项目中有一个.pri,其中包含一些全局字符串定义:

STR1 = string literal 1
STR2 = string literal 2
GIT_VERSION = $$system($$ENV_GIT_EXE_PATH describe --long)
这些字符串在代码中使用:

QString str1 = QStringLiteral(STR1);
QString str2 = QStringLiteral(STR2);
QString str3 = QStringLiteral(GIT_VERSION);

如何使用cmake项目实现此功能?我无法更改源代码(C++.h/.cpp),必须以某种方式使用cmake功能准备这些字符串

Qmake的字符串文字只不过是预处理器宏定义。 在CMake中,可以使用或使用

因此,类似的情况是:

add_compile_definitions(STR1="string literal 1")
add_compile_definitions(STR2="string literal 2")
execute_process(COMMAND ${ENV_GIT_EXE_PATH} describe --long
OUTPUT_VARIABLE git_version)
add_compile_definitions(GIT_VERSION="${git_version}")

另外,您可以使用
$ENV{GIT_EXE_PATH}

访问环境变量add_compile_定义和add_定义之间有什么区别?@amigo421 add_定义是上述命令的旧版本,据我所知,它仅用于向后兼容