cmake 类似于 qmake 字符串文字
cmake analogues to qmake string literals
有一个 .pri 作为 qmake 项目的一部分,其中包含一些全局字符串定义:
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
or with target_compile_definitions
来完成
所以类似的是:
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}")
PS。您可以使用 $ENV{GIT_EXE_PATH}
访问环境变量
有一个 .pri 作为 qmake 项目的一部分,其中包含一些全局字符串定义:
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
or with target_compile_definitions
所以类似的是:
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}")
PS。您可以使用 $ENV{GIT_EXE_PATH}