cmake类似于qmake字符串文字

问题描述 投票:0回答:1

有一个.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功能以某种方式准备这些字符串

c++ qt cmake qmake
1个回答
1
投票

Qmake的字符串文字只是一个预处理器宏定义。在CMake中,可以使用add_compile_definitionstarget_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}访问环境变量

© www.soinside.com 2019 - 2024. All rights reserved.