我想创建一个既适用于msvc又适用于gcc的项目文件。
例如,要优化速度,您需要执行cl /O2
和g++ -O3
。
但我不知道如何告诉项目文件有所作为。我想要像:
msvc:QMAKE_CXXFLAGS_RELEASE += /O2 /openmp /arch:AVX
else:QMAKE_CXXFLAGS_RELEASE += -O3 -march=native -fopenmp -D_GLIBCXX_PARALLEL
这不好用。
其他方式是更改mkspecs并使用我的应用程序捆绑新的mkspec,但它不是非常便携。 谢谢!
答案 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
}