Search code examples
c++gccqmake

Is there a set of standard compiler options?


I am making a project using qmake and I want it to be easy to compile by many users. So far I was developing only for Linux and only for the gcc compiler. I would like my project to be compilable on other platforms too.

So far I passed the compiler options (which I found in the gcc documentation) to qmake like this:

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

But then I realized that these options may not be valid on other compilers and tried to find equivalent options for other popular compilers, such as clang or Intel. To my surprise I found out that:

  1. The optimization options -O0, -O1, -O2, -O3 are common to all three compilers.
  2. The -std=c++11 and -std=c++14 options are common to gcc and clang
  3. As far as I know, -ffloat-store and some other options are present only in gcc.

I wonder, is there some set of options, that is either formally or informally standard?


Solution

  • POSIX defines something about the c99 command (but AFAIK nothing about C++).

    However, the qmake utility will usually be able to find out (or at least to expect) what is the C++ compiler and how to invoke it. Notice that it is generating a Makefile

    Outside of Qt you might consider cmake or autoconf. They both generate Makefile-s.

    See also this answer (on Programmers).