代码之家  ›  专栏  ›  技术社区  ›  Bharathwaaj

如何将预处理def(宏)添加到qt creator?

  •  32
  • Bharathwaaj  · 技术社区  · 14 年前

    在Eclipse中,有一个选项可以通过在Paths和Symbols中使用Symbols选项来指定项目的预处理定义(#ifdef宏)。这有助于跨平台代码的有效索引。在Qt creator中有没有提供这些选项?

    5 回复  |  直到 14 年前
        1
  •  16
  •   Gus E    10 年前

    QT Documentation :

    规则C++文件,当你的源文件被所有的时候 已解析。仅使用.config文件添加行,如示例所示 下图:

    #define NAME value
    

    对于我的项目,它会使索引器识别这个define项目范围,并更改auto complete以反映这一点。

        2
  •  39
  •   Melebius    7 年前

    首先您可以添加 DEFINES += SOME_DEFINE=value

    定义+=某些值 Qt Creator在配置项目时将发出的qmake调用。这在项目模式、构建设置、QMake步骤中发生。

    #define SOME_DEFINE

        3
  •  7
  •   Brandon    7 年前

    我想在.pro文件中指定一个#define字符串,但是我的代码最终得到了字符串的内容而没有引号。我必须对引号进行转义,然后转义以得到一对引号,从而一直延续到我的代码中。这是因为qmake去掉一组转义和一些引号,然后命令行去掉其余的。这对我有用:

    DEFINES += "VERSION=\"\\\"0.1.0\\\"\""
    

    在Windows上,可以在.rc文件中使用这个版本字符串来创建Windows需要的版本,也可以在“关于”菜单的代码中使用。

        4
  •  7
  •   code_dredd    7 年前

    手动 但是有很多方法可以让IDE为您管理 自动 根据你是否有 释放 调试 已选择配置。

    这一点可能是多余的,但请注意,这将为您工作 只有在使用IDE构建 . 显然,如果不是这样,您将需要一个不同的解决方案。

    由于图片胜过千言万语,下面是一个如何使用Qt Creator 4.3.1为调试构建定义调试宏的示例:

    1. 确保你有你的 调试

    Run Configurations

    1. 转到 项目
    2. 转到 建造 部分

    Projects >> Build

    1. 构建步骤 ,寻找 附加参数 输入框;
    2. 输入宏定义(例如。 DEBUG 为了你的 #ifdef DEBUG 密码里有;我的情况是 __CTS_DEBUG__ )

    Additional Arguments

    宏现在仅在使用调试配置时定义;当您选择 释放

    结果

    已选择配置

    Debug Config

    释放

    Release Config

        5
  •  1
  •   Patrice Bernassola    14 年前

    您可以在QtCreator的项目设置中定义一些预处理器。我没有QtCreator在这里,但我记得有一个项目配置选项卡。

        6
  •  1
  •   23r0c001    4 年前

    DEFINE += KEY=value

    直到我把它改成:

    DEFINES += KEY=value

    也就是说, 如果您想从命令行执行所有操作, 下面介绍一种几乎混合的解决方案,它不使用Qt Creator GUI,但使用.pro文件:

    https://www.linux.org/threads/c-tutorial-create-qt-applications-without-qtcreator.18409/

    使用上面链接中描述的方法,您可以 qtcreator -project .pro notepad vim 或其他文本编辑器来添加 定义+=键=值 专业人士 你刚创建的文件。然后使用qmake: qmake <your_project>.pro ,做Qt的预处理,最后才做 make 生成可执行文件。

    我也听说过 qtcreator -D https://doc.qt.io/archives/qt-4.8/qmake-variable-reference.html#defines