【问题标题】:cmake analogues to qmake string literalscmake 类似于 qmake 字符串文字
【发布时间】:2019-02-19 16:53:29
【问题描述】:

有一个 .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】:

    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}访问环境变量

    【讨论】:

    • add_compile_definitions 和 add_definitions 有什么区别?
    • @amigo421 add_definitions 是上述命令的旧版本,据我所知,它只是为了向后兼容
    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多