gpt4 book ai didi

c++ - 如何通过修改 make 命令覆盖我的 Makefile 中的标志

转载 作者:行者123 更新时间:2023-12-05 04:13:06 24 4
gpt4 key购买 nike

我目前运行的 make -j20 TGT=stuffMakefile 中获取了数百个我无法编辑的标志。

我想删除优化 -O3 以传递 -O0 进行调试。我可以通过修改 make -j20 ... 命令来覆盖 Makefile 中的内容吗?

编辑:我使用 g++

最佳答案

您问题的答案取决于用于编译 C++ 文件的规则。由于您不想共享您的 makefile,我将使用 C++ 程序的默认隐式规则对此进行解释。

你可以通过像这样调用 make 来覆盖任何 make 变量,比如“MY_VAR”:让 MY_VAR='你好'

编译 C++ 的默认配方看起来与此类似:

%.o : %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@

按照惯例,CPPFLAGS 是传递给 C 和 C++ 预处理器的标志,CXXFLAGS 与 C++ 编译相关。

所以我假设您的 makefile 设置了 CXXFLAGS,可以这样说:

CXXFLAGS = -O3

您希望它是 -O0,因此您可以覆盖 CXXFLAGS。

像这样调用:

make -j20 TGT=stuff CXXFLAGS='-O0'

既然你想调试你可能应该使用:

make -j20 TGT=stuff CXXFLAGS='-O0 -g'

如果您的 makefile 中 CXXFLAGS 的默认值包含其他重要标志,您也必须指定这些标志 - 您覆盖它的值。

另见: https://www.gnu.org/software/make/manual/html_node/Overriding.html

制作手册非常好,我只能推荐看一看。

关于c++ - 如何通过修改 make 命令覆盖我的 Makefile 中的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com