【发布时间】:2015-06-05 03:27:35
【问题描述】:
假设我的 makefile 中有以下条目:
ifeq ($(MY_DEBUG),yes)
EXTRACXXFLAGS += -DMY_DEBUG=2
endif
我用make foo MY_DEBUG=yes 调用它,现在我基本上有了
#define MY_DEBUG 2
所有可用的项目文件。
问题:我可以这样在整个项目中定义宏函数,而不包括某种带有-include或其他方式的头文件吗?
我需要在我的 makefile 中是这样的:
/* not working code */
ifeq ($(MY_DEBUG),yes)
EXTRACXXFLAGS += -Ddbg_print(...)=printf(##__VA_ARGS__)
endif
通常我会在某个标题中定义这个宏函数,包含在整个项目中,但是这个特定的项目太大并且没有这样的标题。
如果一个人到处都有头文件,该怎么办:
Makefile
# this is in makefile
ifeq ($(MY_DEBUG),yes)
EXTRACXXFLAGS += -DMY_DEBUG
endif
globally_included_header.h
// header, included all over the project
#ifdef MY_DEBUG
# define dbg_print(...) printf(##__VA_ARGS__)
#else
# define dbg_print(...)
#endif
【问题讨论】: