makefile - EXTRA_CFLAGS的目的是什么?

标签 makefile compiler-flags

EXTRA_CFLAGS的预期用途是什么?

我在某些情况下看到了它,但是我从来不明白为什么不只是将标志附加到CFLAGS而不是EXTRA_CFLAGS

我首先认为与make如何定义其隐式规则有关,但事实并非如此。据我了解,make隐含规则中没有使用EXTRA_CFLAGS,对吗?

如有任何启发,我将不胜感激。

最佳答案

嗯,这不是标准make或内置make规则的任何部分,因此这只是您惯常使用的一些makefile的约定。之所以将其作为单独的标志完成,是因为您可以在命令行上使用它:

make EXTRA_CFLAGS=-O3

命令行变量分配会覆盖makefile中变量的任何设置,因此附加操作无效。那是:
$ cat Makefile
CFLAGS += -Dfoo

all: ; @echo '$(CFLAGS)'

$ make CFLAGS=-Dbar
-Dbar

$ make CFLAGS+=-Dbar
-Dbar

两者都将显示-Dbar,而不是-Dfoo -Dbar

这就是为什么它是一个单独的标志。在自动制作环境中,它们显式保留CFLAGS供用户在命令行上提供,并且所有“正常”标志都放入其他变量中。

关于makefile - EXTRA_CFLAGS的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862627/

相关文章:

c++ - MakeFile 中的 "undefined reference to"

c++ - 与 SDL_mixer 库链接错误

makefile - 获取 GNU makefile 中最后一个单词之前的单词

c++ - 如何在 makefile 中包含 -std=c++11 和 -lpthread?

c++ - 编译器标志在 CMake CHECK_CXX_COMPILER_FLAG 中检查了两次

makefile - 用GNU make构建C程序 “out of source tree”

c - #pragma pack 与 Intel C 的 -fpack-struct

ios - GoogleSignIn/Crashlytics/Firebase 的自定义编译器标志

c-preprocessor - 覆盖 CPP 输出中的行标记文件名

c++ -/d2vzeroupper MSVC 编译器优化标志在做什么?