optimization - 检查 waf 中的编译器优化标志

标签 optimization compiler-construction waf

我已经开始使用 waf 构建系统作为 CMake 的替代方案。到目前为止,这是一次很棒的经历。但是,我无法找出有条件地将优化标志传递给编译器的好方法。我编写的一些代码受益于仅在最近的 gcc 版本中可用的特定优化标志,但我希望我的代码尽可能可移植。因此,我想在将它们添加到用于编译的 cxx 标志列表之前检查编译器是否支持这些标志。最简单的方法是什么?

最佳答案

您可以使用 ConfigSet cfg.env 的存储功能来使用代码块测试 CFLAGS:

  • 隐藏 cfg.env
  • 添加CFLAGS
  • 执行检查,如果检查失败,则恢复cfg.env

请记住,特定的 CFLAGS 是不可移植的,如果您更改编译器或目标架构,它们将无法工作。您可能希望您的代码能够使用不同的编译器,因此您应该仅在可以识别编译器时启用(添加)特定的 CFLAGS。

如果您的代码是开源的,如果您的代码不是性能关键型的,那么就不必费力强加 CFLAGS。 大多数 Linux 发行版都会根据目标添加全局优化标志。

关于optimization - 检查 waf 中的编译器优化标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961675/

相关文章:

c - 哪个运算符更快(> 或 >=)、(< 或 <=)?

android - ConstraintLayout 优化细节

c - 为什么在使用 Bison 的 C 语法分析期间无法识别已定义的标记?

compiler-construction - 实现类型推断

c++ - 你如何在 osx 上使用 waf 链接 opengl 和 glut?

javascript - 在 JavaScript 对象中使用构造函数有什么好处?

database - 如何在 SQL Server 2008 中优化存储以下 SQL 数据

c++ - limits.h 中的条件编译语句

waf - 自定义waf任务既不运行也不找源

macos - 在 OSX 上使用 Waf 编译 OpenGL/SDL 应用程序时,如何抑制 '-arch' 、 'x86_64' 标志?