在Qt中我可以指定其他编译器选项吗?例如-std = c ++ 0x?
答案 0 :(得分:47)
您可以尝试添加
QMAKE_CXXFLAGS += -std=c++0x
到您的.pro文件。
但是,这不应该在Qt 5中用于启用特定的c ++标准。相反,c++11
变量中的c++14
或CONFIG
可以做到这一点。它将启用GNU扩展(-std = gnu ++ 11),但如果这是不需要的,如果要禁用它们,还要添加strict_c++
。例如,这应该将-std=c++11
传递给编译器:
CONFIG += c++11 strict_c++
答案 1 :(得分:17)
在.pro文件中,您可以添加:
QMAKE_CXXFLAGS += -std=c++0x
我认为规范qmake.conf
中的每个变量都可以像这样改变。
例如,win32-g ++规范包括以下变量:
QMAKE_CC = gcc
QMAKE_LEX = flex
QMAKE_LEXFLAGS =
QMAKE_YACC = byacc
QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS =
QMAKE_CFLAGS_DEPS = -M
QMAKE_CFLAGS_WARN_ON = -Wall
QMAKE_CFLAGS_WARN_OFF = -w
QMAKE_CFLAGS_RELEASE = -O2
QMAKE_CFLAGS_DEBUG = -g
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
QMAKE_CXX = g++
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_RTTI_ON = -frtti
QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
答案 2 :(得分:6)
QT处理编译器选项的方式是通过.pro文件。如果可能的话,这是一把双刃剑。它创建了一个很好的抽象,特别是在编译大型项目时。问题是您必须查找或记住如何添加标志。对于C ++ 0X,您必须将以下标志添加到.pro文件中:
QMAKE_CXXFLAGS += -std=c++0x
幸运的是,如果您使用QtCreator,则会自动添加您需要的大部分标志。