是否有一组标准的编译器选项?
Is there a set of standard compiler options?
我正在使用 qmake
制作一个项目,我希望它易于被许多用户编译。到目前为止,我只为 Linux 和 gcc 编译器开发。我希望我的项目也可以在其他平台上编译。
到目前为止,我将编译器选项(我在 gcc 文档中找到)传递给 qmake,如下所示:
QMAKE_CXXFLAGS += -std=c++14 \
-ffloat-store \
-O3 \
但后来我意识到这些选项在其他编译器上可能无效,并试图为其他流行的编译器找到等效选项,例如 clang 或 Intel 。令我惊讶的是,我发现:
- 优化选项
-O0, -O1, -O2, -O3
对所有三个编译器都是通用的。
-std=c++11
和-std=c++14
选项对于gcc和clang 是通用的
- 据我所知,
-ffloat-store
和其他一些选项仅存在于 gcc. 中
我想知道,是否有一组正式或非正式标准的选项?
没有
C++ 标准不涵盖任何编译器选项。这在不同的实现(甚至是同一实现的不同版本)之间可能会有很大差异。
POSIX 定义了一些关于 c99 命令的东西(但 AFAIK 没有关于 C++ 的东西)。
但是,qmake 实用程序通常能够找出(或至少期望)什么是 C++ 编译器以及如何调用它。请注意,它正在生成 Makefile
在 Qt 之外,您可能会考虑 cmake or autoconf。它们都生成 Makefile
-s.
另见 this answer (on Programmers)。
在我的脑海中,主要编译器之间几乎没有任何共同点。
事实是,当您瞄准多个平台时,任何重要的项目都需要对代码内和构建过程进行一些微调。你最好的选择是根据我的经验(这主要是基于意见),为每个编译器设计构建过程尽可能简单,并通过 [=16= 中的 pragmas 修复大部分 'quirks' ] 具体的包含文件,你 "auto-include" 无处不在。
我正在使用 qmake
制作一个项目,我希望它易于被许多用户编译。到目前为止,我只为 Linux 和 gcc 编译器开发。我希望我的项目也可以在其他平台上编译。
到目前为止,我将编译器选项(我在 gcc 文档中找到)传递给 qmake,如下所示:
QMAKE_CXXFLAGS += -std=c++14 \
-ffloat-store \
-O3 \
但后来我意识到这些选项在其他编译器上可能无效,并试图为其他流行的编译器找到等效选项,例如 clang 或 Intel 。令我惊讶的是,我发现:
- 优化选项
-O0, -O1, -O2, -O3
对所有三个编译器都是通用的。 -std=c++11
和-std=c++14
选项对于gcc和clang 是通用的
- 据我所知,
-ffloat-store
和其他一些选项仅存在于 gcc. 中
我想知道,是否有一组正式或非正式标准的选项?
没有
C++ 标准不涵盖任何编译器选项。这在不同的实现(甚至是同一实现的不同版本)之间可能会有很大差异。
POSIX 定义了一些关于 c99 命令的东西(但 AFAIK 没有关于 C++ 的东西)。
但是,qmake 实用程序通常能够找出(或至少期望)什么是 C++ 编译器以及如何调用它。请注意,它正在生成 Makefile
在 Qt 之外,您可能会考虑 cmake or autoconf。它们都生成 Makefile
-s.
另见 this answer (on Programmers)。
在我的脑海中,主要编译器之间几乎没有任何共同点。
事实是,当您瞄准多个平台时,任何重要的项目都需要对代码内和构建过程进行一些微调。你最好的选择是根据我的经验(这主要是基于意见),为每个编译器设计构建过程尽可能简单,并通过 [=16= 中的 pragmas 修复大部分 'quirks' ] 具体的包含文件,你 "auto-include" 无处不在。