【发布时间】:2016-08-23 13:54:17
【问题描述】:
我想在 buildroot 中使用 -std=c++11 构建 boost 和其他软件包? 是否可以全局传递它,而不是通过修补程序 .mk 文件?
【问题讨论】:
标签: c++ c++11 buildroot build-system
我想在 buildroot 中使用 -std=c++11 构建 boost 和其他软件包? 是否可以全局传递它,而不是通过修补程序 .mk 文件?
【问题讨论】:
标签: c++ c++11 buildroot build-system
没有简单的方法在全局范围内传递它,这是有充分理由的:某些包可能无法使用 C++11 构建,例如因为他们使用了新的保留字。
但是,如果您真的想冒险,您有三个选择:
将-std=c++11 添加到BR2_TARGET_OPTIMIZATION(在工具链菜单中)。这将包含在工具链包装器中,因此可用于每次编译。请注意,对于 C 程序,这将为您提供“命令行选项‘-std=c++11’对 C++/ObjC++ 有效,但对 C 无效”警告。所以到 -Werror 的包会坏掉。
修改 package/Makefile.in 并将 -std=c++11 添加到 TARGET_CXXFLAGS。在这种情况下,它只传递给 C++ 编译器。但是,TARGET_CXXFLAGS 只是传递给包构建系统,并非所有构建系统都支持它。
修改 toolchain/toolchain-wrapper.c 以在调用 g++ 时添加此选项。这没有其他两个的缺点,但需要更多的工作来实现。
【讨论】: