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