【发布时间】:2014-04-14 02:24:31
【问题描述】:
我无法理解命令行中的分配是如何工作的。
当我跑步时:
qmake-qt4 -project -o project.pro
qmake-qt4 -o qMakeFile "CFLAGS += -std=c++11"
make -f qMakeFile
qMakeFile 生成后,CFLAGS 不变。
我确定我很明显错过了一些东西。
【问题讨论】:
我无法理解命令行中的分配是如何工作的。
当我跑步时:
qmake-qt4 -project -o project.pro
qmake-qt4 -o qMakeFile "CFLAGS += -std=c++11"
make -f qMakeFile
qMakeFile 生成后,CFLAGS 不变。
我确定我很明显错过了一些东西。
【问题讨论】:
这里有几个问题:
您正在尝试为 CFLAGS 变量设置 C++ 选项,而不是 CXXFLAGS。
这很有用,因为当您出于某种原因重新运行 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。有时,人们会陷入陷阱,他们没有注意到他们会使用当时不支持的旧版本。
【讨论】: