qmake在命令行中分配变量

时间:2014-04-14 02:24:32

标签: c++ qt c++11 qt4 qmake

我无法理解命令行中的分配如何工作。

我跑的时候:

qmake-qt4 -project -o project.pro
qmake-qt4 -o qMakeFile "CFLAGS += -std=c++11"
make -f qMakeFile

在生成qMakeFile之后,CFLAGS保持不变。

我确信这是我想念的东西。

1 个答案:

答案 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。有时,人们会陷入陷阱,他们没有注意到他们会使用当时不支持它的旧版本。