我阅读了很多有关 CFLAGS
的教程,还查看了官方文档。他们到处都说 CFLAGS
是隐式的,但仍然在示例 makefile 中将其显式传递给编译器:
CFLAGS=-O2
gcc $(CFLAGS) -c foo.c -o foo.o
那么,“隐式”一词在这种情况下意味着什么?如果我在 makefile 中声明 CFLAGS=-O2
,然后只说 gcc -c foo.c -o foo.o
,将会 -O2
是否活跃(那么,它真的是隐含的)吗?如果是这样,为什么所有教程(包括官方文档)仍然在示例中明确传递它?
最佳答案
Everywhere they say CFLAGS is implicit but still pass it explicitly in their example makefile to the compiler.
gcc 不使用 CFLAGS
环境变量。请参阅Environment Variables Affecting GCC .
CFLAGS
是带有 C 编译器标志的 Makefile 变量的常规名称,由隐式 make 规则使用。请参阅Variables Used by Implicit Rules了解更多详情。
如果您使用自己的 make 规则而不是内置规则,则根本不需要使用 CFLAGS
。尽管这样做是一个有用的约定,因为人们熟悉常规的 make 变量名称。
关于gcc - 我需要将 CFLAGS 显式传递给 gcc 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899756/