qmake:处理gcc和msvc的选项

时间:2013-08-22 04:38:08

标签: c++ qt visual-c++ g++ qmake

我想创建一个既适用于msvc又适用于gcc的项目文件。

例如,要优化速度,您需要执行cl /O2g++ -O3

但我不知道如何告诉项目文件有所作为。我想要像:

msvc:QMAKE_CXXFLAGS_RELEASE += /O2 /openmp /arch:AVX
else:QMAKE_CXXFLAGS_RELEASE += -O3 -march=native -fopenmp -D_GLIBCXX_PARALLEL

这不好用。

其他方式是更改mkspecs并使用我的应用程序捆绑新的mkspec,但它不是非常便携。 谢谢!

2 个答案:

答案 0 :(得分:9)

Jean,确切地说,你应该根据你的描述使用它:

msvc:QMAKE_CXXFLAGS_RELEASE += /O2 /openmp /arch:AVX
gcc:QMAKE_CXXFLAGS_RELEASE += -O3 -march=native -fopenmp -D_GLIBCXX_PARALLEL

答案 1 :(得分:0)

这是我一直在使用的项目文件。它适用于Windows(msvc)和Linux(gcc)

QT = core gui widgets

HEADERS += \
    render.h

SOURCES += \
    main.cpp \
    render.cpp

QMAKE_CXXFLAGS_RELEASE -= -O
QMAKE_CXXFLAGS_RELEASE -= -O1
QMAKE_CXXFLAGS_RELEASE -= -O2

win32 { # For Windows
  QMAKE_CXXFLAGS += -openmp
  QMAKE_CXXFLAGS += -arch:AVX
  QMAKE_CXXFLAGS += -D "_CRT_SECURE_NO_WARNINGS"
  QMAKE_CXXFLAGS_RELEASE *= -O2
}

linux { # For Linux
  QMAKE_CXXFLAGS += -fopenmp
  QMAKE_LFLAGS += -fopenmp
  QMAKE_CXXFLAGS += -mavx
  QMAKE_CXXFLAGS_RELEASE *= -O3
}