我无法理解命令行中的分配如何工作。
我跑的时候:
qmake-qt4 -project -o project.pro
qmake-qt4 -o qMakeFile "CFLAGS += -std=c++11"
make -f qMakeFile
在生成qMakeFile之后,CFLAGS保持不变。
我确信这是我想念的东西。
答案 0 :(得分:1)
这里有几个问题:
您正在尝试为CFLAGS变量设置C ++选项,而不是CXXFLAGS。
如果我是,我会在创建项目文件时将"CFLAGS+=-std=c++11"
传递给第一个qmake run,因为变量将被放入生成的qmake文件中,然后,而不是仅仅放入Makefile中用你当前的方法。
这很有用,因为当你因某种原因重新运行qmake时,你不需要一直显式地传递CFLAGS
以确保它会在你的Makefile中。
此外,您应该考虑在qmake项目文件中使用QMAKE_CXX_FLAGS
变量而不是原始CXXFLAGS
。
更进一步,qmake通过CONFIG1
变量更好地支持c ++ 11。
另一件事是我个人会删除附加作业周围不必要的额外空格。如果你签出,这会在Makefile中生成不必要的额外空格,然后需要对其进行转义等等。
另外,我不确定为什么需要生成自定义Makefile名称。
我个人会写这样的东西:
qmake -project "QMAKE_CXXFLAGS+=-std=c++11" # only executed once
或者更推荐这个:
qmake -project "CONFIG+=c++11" # only executed once
qmake && make
请确保您有一个最新的编译器版本支持此选项和一般的C ++ 11。有时,人们会陷入陷阱,他们没有注意到他们会使用当时不支持它的旧版本。