CONFIG(release, debug|release) { # We need fat object files when creating static libraries on some platforms # so the linker will know to load a particular object from the library # in the first place. With GCC, we have -ffat-lto-objects. MSVC # seems to work just fine. For other compilers, we disable LTCG # for static libraries. msvc { # Nothing to do } else: gcc { !clang:!intel_icc { static|fat-lto { QMAKE_CFLAGS_LTCG += -ffat-lto-objects QMAKE_CXXFLAGS_LTCG += -ffat-lto-objects } else { QMAKE_CFLAGS_LTCG += -fno-fat-lto-objects QMAKE_CXXFLAGS_LTCG += -fno-fat-lto-objects } linux { # Get the number of online processors, like _SC_NPROCESSORS_ONLN isEmpty(QMAKE_NPROCESSORS_ONLN) { QMAKE_NPROCESSORS_ONLN = $$system("grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo 1") cache(QMAKE_NPROCESSORS_ONLN, set stash) } # Override LTO number of jobs QMAKE_LFLAGS_LTCG -= -flto QMAKE_LFLAGS_LTCG += -flto=$$QMAKE_NPROCESSORS_ONLN } } else: static { QMAKE_CFLAGS_LTCG = QMAKE_CXXFLAGS_LTCG = QMAKE_LFLAGS_LTCG = } } load(link_ltcg) QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG }