我正在使用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 中。我想知道,是否有一些选项,无论是正式还是非正式标准?
答案 0 :(得分:1)
没有
C ++标准不包含任何编译器选项。这可能在不同的实现(甚至是同一实现的不同版本)之间变化很大。
答案 1 :(得分:1)
POSIX定义了c99命令(但AFAIK没有关于C ++)。
但是,qmake实用程序通常能够找出(或至少预期)什么是C ++编译器以及如何调用它。请注意,它正在生成Makefile
在Qt之外,您可以考虑cmake或autoconf。它们都生成Makefile
- s。
另请参阅this answer(在Programmers上)。
答案 2 :(得分:1)
在我的脑海中,主要编译器之间几乎没有任何共同之处。
事实是,当您瞄准多个平台时,任何非平凡的项目都需要对代码内和构建过程进行微调。你最好的选择是根据我的经验(这主要是基于意见的),使每个编译器的构建过程尽可能简单,并通过pragma在平台/编译器特定的包含文件中修复大多数'怪癖'你到处“自动包含”。