在Qt Creator中,我该在哪里传递编译器参数?

40

我应该在Qt Creator的哪里传递编译器参数?
这并不是很明显。

6个回答

49

根据您的构建系统,它可能在您的qmake项目文件(.pro,适用于新项目)中或在CMake文件之一(CMakeLists.txt,由KDE和其他几个项目使用)中。

使用 .pro:

QMAKE_CXXFLAGS += -O2

使用CMake:
set( CMAKE_CXX_FLAGS "-g -Wall")

你知道如何在 .pro 文件中传递多个参数给编译器吗? - smallB
2
你可以用空格分开它们 QMAKE_CXXFLAGS += arg1 arg2,同时也可以使用多行 QMAKE_CXXFLAGS += arg 的方式,如果你希望获得特定平台的构建行为,这通常是常规的方式。 - mbx
1
感谢提供cmake参考资料。 - steventaitinger
关于CMake项目:虽然我同意这是对原帖的回答,但我错过了在不编辑项目文件的情况下传递标志给CMake的选项。当在Qt之外运行cmake时,可以传递像-DCMAKE_CXX_FLAGS "-g -Wall"这样的标志。如何在(较新版本的)Qt Creator中实现这一点?我记得在Qt Creator的旧版本(2012年之前)中,当在Qt中打开一个CMake项目时,可以在命令提示符中传递这些标志。 - normanius
1
刚刚发现了这份文档,它展示了在Qt Creator v3.x中的工作方式。我非常想念这个功能在Qt Creator v4.x中的存在 :( - normanius

9
要添加编译器标志,打开您的 .pro 文件并添加以下行:
QMAKE_CXXFLAGS += -std=c++0x

对于类似调试和发布等标准标志,你应该尝试使用预定义的qmake选项(请参阅QMake文档),以便实现跨平台和编译器无关性,因为QMake会将它们映射到特定于编译器的标志。


谢谢,很遗憾您不能通过某个对话框传递它们。无论如何还是要谢谢。 - smallB
1
那个对话框可能比打开文本文件并添加一行更复杂,而且无法处理任何高级逻辑。也许这是因为我来自Unix世界,但我从来没有见过可以方便地处理实际项目的构建系统复杂性的UI。此外,您将失去任何良好构建系统的主要功能:毫不费力地复制和粘贴 ;) - Frank Osterfeld

5
如果您的意图是预编译某些源代码,可以按照以下步骤操作:
/A/ 在您的 .pro 文件中添加以下行:
DEFINES += HOPLA

/B/ 在你的 .cpp 或 .h 文件中,你可以这样使用它:

#ifdef HOPLA
// Do something
#else
// Do something different
#endif

4

对于 C 项目,在 .pro 文件中添加以下行:

QMAKE_CFLAGS += -std=c99

2
正如选定的答案所指出的那样,对于基于CMake的项目,您可以编辑CMakeLists.txt并为编译器设置标志。针对这种情况,我有一个关于如何在QtCreator/CMake上添加标志的图示演示。
我想要添加“-pedantic”标志,这会在执行程序时发出警告,而不会抛出错误。以下是如何在使用QtCreator时启用CMake编译器标志的图示示例: enter image description here 更多背景信息:
在下面的示例中,我正在设置静态数组的大小,这是仅在C99中可用的可变长度数组功能,但从C11开始将其定义为可选功能。如果编译器没有可用的-pedantic标志,则在编译代码后不会显示警告。

1
在.pro文件中,您可以添加变量以修改make的行为。例如,如果您尝试执行以下命令:
g++ -Wall -I/usr/include/cppconn -o exe main.cpp -L/usr/lib -lmysqlcppconn

您必须在.pro文件中添加以下行:
INCLUDEPATH += /usr/include/cppconn
LIBS += -L/usr/lib -lmysqlcppconn

请查看下面的图片。 在此输入图像描述 如需了解QT IDE使用的可用变量的更多信息,您可以访问以下链接,在那里他们详细解释了每个变量。 Qt文档:变量

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接