cmake类似于Qmake String文字
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
或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}
相关文章:
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- cppcheck在const std::string[]上引发警告
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- std中有类似find_last_of的函数,而string中没有
- 构造<int>具有 2 个字符串文字的向量
- 比较 std::string 和 C 样式字符串文字
- cmake类似于Qmake String文字
- 从相同的硬编码字符串文字初始化std::string和std::wstring
- 如果我返回文字而不是声明的 std::string 会发生什么
- 为什么 std::string 没有标准定义的文字后缀?
- C++ std::string 如何格式化带有多个双引号的字符串文字
- 为什么 std::string 不定义乘法或文字?
- 使用文字初始化系统::String^,但不使用字符串::c_str()或char[]
- 来自文字的静态std::string对象的宏
- 我怎样才能加快 std::string 与字符串文字的比较
- 字符串文字匹配bool重载,而不是std::String