是否有一组标准编译器选项?

时间:2015-02-14 20:44:23

标签: c++ gcc qmake

我正在使用qmake创建一个项目,我希望它很容易被许多用户编译。到目前为止,我只针对 Linux 开发,仅针对 gcc 编译器。我希望我的项目也可以在其他平台上编译。

到目前为止,我将编译器选项(我在gcc文档中找到)传递给qmake,如下所示:

QMAKE_CXXFLAGS += -std=c++14 \
                  -ffloat-store \
                  -O3 \

但后来我意识到这些选项在其他编译器上可能无效,并试图找到其他流行编译器的等效选项,例如 clang Intel 。令我惊讶的是,我发现了:

  1. 优化选项-O0, -O1, -O2, -O3对所有三个编译器都是通用的。
  2. -std=c++11-std=c++14选项适用于 gcc clang
  3. 据我所知,-ffloat-store和其他一些选项仅出现在 gcc 中。
  4. 我想知道,是否有一些选项,无论是正式还是非正式标准?

3 个答案:

答案 0 :(得分:1)

没有

C ++标准不包含任何编译器选项。这可能在不同的实现(甚至是同一实现的不同版本)之间变化很大。

答案 1 :(得分:1)

POSIX定义了c99命令(但AFAIK没有关于C ++)。

但是,qmake实用程序通常能够找出(或至少预期)什么是C ++编译器以及如何调用它。请注意,它正在生成Makefile

在Qt之外,您可以考虑cmakeautoconf。它们都生成Makefile - s。

另请参阅this answer(在Programmers上)。

答案 2 :(得分:1)

在我的脑海中,主要编译器之间几乎没有任何共同之处。

事实是,当您瞄准多个平台时,任何非平凡的项目都需要对代码内和构建过程进行微调。你最好的选择是根据我的经验(这主要是基于意见的),使每个编译器的构建过程尽可能简单,并通过pragma在平台/编译器特定的包含文件中修复大多数'怪癖'你到处“自动包含”。