首页 > 解决方案 > 通过 MAKE 将参数传递给编译器

问题描述

当我尝试构建代码时:

make -C ./source/SomeUtil mode=release

它失败并出现错误:

致命错误:模板实例化深度超过最大值 35(使用 -ftemplate-depth= 增加最大值)

似乎我需要强制 MAKE 将该参数传递给编译器: -ftemplate-depth=50

我试图设置变量CFLAGSCXXFLAGS,但它根本没有帮助(ftemplate-depth=35 仍然出错)。

export CFLAGS="-ftemplate-depth=50"
export CXXFLAGS="$CFLAGS"  

我也尝试在 MAKE 之后通过 CFLAGS 和 CXXFLAGS,但再次没有成功。

如何强制 MAKE 将 -ftemplate-depth=50 参数传递给编译器?谢谢。

标签: ubuntuunixgccmakefileg++

解决方案


您不能强制 make 执行 Makefile 未设置为接受的任何操作。

设置 CXXFLAGS 是正确的想法,但不是 CFLAGS。AC 编译器不知道如何处理“-ftemplate-depth=50”。因此,只需设置 CXXFLAGS 并编辑我们的 makefile 以尊重在环境中设置的 CXXFLAGS(或者更好地扩展 Makefile 中的 CXXFLAGS,这样您就不必通过 make 传递它)并确保它将 CXXFLAGS 传递给编译器。


推荐阅读