ubuntu - 通过 MAKE 将参数传递给编译器
问题描述
当我尝试构建代码时:
make -C ./source/SomeUtil mode=release
它失败并出现错误:
致命错误:模板实例化深度超过最大值 35(使用 -ftemplate-depth= 增加最大值)
似乎我需要强制 MAKE 将该参数传递给编译器: -ftemplate-depth=50
我试图设置变量CFLAGS和CXXFLAGS,但它根本没有帮助(ftemplate-depth=35 仍然出错)。
export CFLAGS="-ftemplate-depth=50"
export CXXFLAGS="$CFLAGS"
我也尝试在 MAKE 之后通过 CFLAGS 和 CXXFLAGS,但再次没有成功。
如何强制 MAKE 将 -ftemplate-depth=50 参数传递给编译器?谢谢。
解决方案
您不能强制 make 执行 Makefile 未设置为接受的任何操作。
设置 CXXFLAGS 是正确的想法,但不是 CFLAGS。AC 编译器不知道如何处理“-ftemplate-depth=50”。因此,只需设置 CXXFLAGS 并编辑我们的 makefile 以尊重在环境中设置的 CXXFLAGS(或者更好地扩展 Makefile 中的 CXXFLAGS,这样您就不必通过 make 传递它)并确保它将 CXXFLAGS 传递给编译器。
推荐阅读
- pyspark - 从 pyspark 读取时,Google Cloud Storage 需要 storage.objects.create 权限
- c - 将入口点更改为PE文件中新添加的shellcode部分后如何恢复主进程?
- java - 限制条件下的过滤列表
- javascript - Vuejs 和 HTML5 Gamepad API:如何渲染 Gamepad 对象?
- android - 如何将视图添加到 android 反编译的 xml 布局并使用 apktool 重建它
- java - 当两个表都有复合主键时如何加入两个表
- intellij-idea - 为 Visual Studio 2017 和 IntelliJ 设置一个键盘映射?
- tensorflow - Keras 中的 Adam 优化器在使用 FP32 而不是 FP16 时有效,为什么?
- reactjs - 与 Material-UI Drawer 和 AppBar 组件反应
- android - 我的 android 应用已被暂停并从 Google Play 中删除,因为它违反了我们的设备和网络滥用政策以及第 4.9 节