Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将预处理def(宏)添加到qt creator?_Qt_Qt Creator - Fatal编程技术网

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

如何将预处理def(宏)添加到qt creator?,qt,qt-creator,Qt,Qt Creator,在Eclipse中,有一个选项可以通过使用路径和符号中的符号选项来指定项目的预处理定义(#ifdef宏)。这有助于对跨平台的代码进行有效的索引。在Qt creator中有没有提供这些选项?您可以在QtCreator的项目设置中定义一些预处理器。我这里没有QtCreator,但我记得有一个用于项目配置的选项卡。这取决于:-) 以下假设您使用的是基于qmake的项目: 首先,您可以将DEFINES+=SOME\u DEFINE=value添加到.pro文件中。这是在creator内部和在命令行上构建

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

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

这取决于:-)

以下假设您使用的是基于qmake的项目:

首先,您可以将
DEFINES+=SOME\u DEFINE=value
添加到.pro文件中。这是在creator内部和在命令行上构建时获取的,并且在从.pro文件创建MSVC或XCode项目时也应该显示

然后,您可以将
DEFINES+=SOME_DEFINE=value
添加到Qt创建者在配置项目时将发出的qmake调用中。这在项目模式、生成设置、QMake步骤中发生

最后,您可以将
#定义一些_定义
值留置权放在头文件中,并将其包括在内。适用于所有类型的项目:-)

来自:

定义在.config文件中指定。.config文件是一个 规则C++文件,当你的源文件被所有的时候 解析。仅使用.config文件添加行,如示例所示 下:

也就是说,如果导入名为MyProject的项目,则应在MyProject.config中指定预处理器定义

对于我的项目,它会使索引器在整个项目范围内识别此定义,并更改自动完成以反映此情况。

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

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

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

我认为最初的答案很好,但是它们要求您手动管理配置,而有一些方法可以让IDE根据您选择的是版本配置还是调试配置自动管理配置

此位可能是多余的,但请注意,仅当您使用IDE进行构建时,此位才适用。显然,如果不是这样,您将需要一个不同的解决方案

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

  • 确保选择了调试配置

  • 转到左侧菜单上的项目部分
  • 转到构建部分
  • 构建步骤下,查找附加参数输入框
  • 输入宏定义(例如,代码中的
    \ifdef DEBUG
    DEBUG
    ;在我的例子中是
    \uu CTS\u DEBUG
  • 宏现在仅在使用调试配置时定义;当您选择版本配置(参见步骤1)时,它将自动变得未定义,并且您的条件编译调试代码将被删除,如下图所示,这正是您一直想要的

    结果 选择调试配置时

    选择发布配置后:


    来自@Tobias Hunger的答案的第一个建议对我很有效。我在.pro文件中这样做:

    DEFINE+=KEY=value

    直到我将其更改为:

    DEFINES+=KEY=value

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

    使用上述链接中描述的方法,您可以使用
    qtcreator-project
    生成
    .pro
    文件,然后使用
    notepad
    vim
    或其他一些文本编辑器将
    DEFINES+=KEY=value
    行添加到刚才创建的
    .pro
    文件中。然后使用qmake thusly:
    qmake.pro
    ,进行Qt预处理,最后使用
    make
    构建可执行文件

    我还听说有一个
    qtcreator-D
    选项可以从命令行添加预处理器定义,如下所述: 但我从未试过


    希望有些东西对你有用!您对CLI的贡献令人钦佩。

    我在项目配置中找不到这样的设置。选项卡名称为“项目”,您可以通过添加预处理器定义在此处自定义编译。我不使用qt creator进行编译。我使用它编制索引。您可以使用\d选项在编译器参数中添加预处理器。示例:g++-D NAME[=Value]这不起作用。我不使用qt-creator进行编译。我用它来索引。看起来qt creator没有静态解释代码的功能。不,我不使用qtcreator进行构建。我不希望它只是因为它强大的索引功能。而且我的项目不是基于qmake的。+1这可能对原始海报没有帮助,但这是谷歌上最热门的“qtcreator defines”,我们中的许多人都在使用qmake并在qtcreator中构建。谢谢如果您使用的是通用项目:您可以将定义添加到PROJECTNAME.defines,如果您使用的是cmake:add defines到您的CMakeLists.txt,如果您使用的是autotools:您运气不好,IIRC,创建者无法从configure.ac:-)中获取定义,但是这些定义最终会出现在包含的某些头文件中。这也会很好地工作。当将define添加到.pro文件时,您必须执行一个干净且简单的命令
    DEFINES += "VERSION=\"\\\"0.1.0\\\"\""