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



我正在使用qmake制作一个项目,我希望它易于许多用户编译。到目前为止,我只为Linuxgcc编译器开发。我希望我的项目也可以在其他平台上编译。

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

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

但后来我意识到这些选项可能对其他编译器无效,并试图为其他流行的编译器(如 clangIntel(找到等效的选项。令我惊讶的是,我发现:

  1. 优化选项-O0, -O1, -O2, -O3对所有三个编译器都是通用的。
  2. -std=c++11-std=c++14选项对于 gccclang 是通用
  3. 据我所知,-ffloat-store和其他一些选项仅在 gcc 中存在。

我想知道,是否有一些正式或非正式标准的选择?

POSIX定义了有关c99命令的某些内容(但AFAIK与C++无关(。

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

在Qt之外,你可以考虑cmake或autoconf。它们都生成 Makefile -s。

另请参阅此答案(关于程序员(。

No.

C++标准不包括任何编译器选项。这是不同实现(甚至同一实现的不同版本(之间可能会有很大差异的东西。

在我的头顶上,主要编译器之间几乎没有任何共同点。

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

最新更新