cmake аналоги строковых литералов qmake - PullRequest
0 голосов
/ 19 февраля 2019

существует .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

1 Ответ

0 голосов
/ 20 февраля 2019

Строковые литералы Qmake - не что иное, как определения макросов препроцессора.В CMake это может быть сделано с add_compile_definitions или с 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}

...