我知道有一个选项可以将编译时宏/定义添加到可在代码中使用的 Kconfig 文件。
(例如,一些常量的定义,如#define)。
Kconfig 值按照 Makefile 的定义传递。此外,所有选定的 Kconfig 值都放在头文件中并传递给汇编程序和“C”代码。因此,您不必直接在 Kconfig 文件中执行此操作,而是可以在 Makefile 或源代码中执行此操作。
config MY_DEFINE
bool "Select to get some DEFINE"
default y
help
This is a config define that is sent to both make
and defined in a config.h header.
ifeq ($(CONFIG_MY_DEFINE),y)
KBUILD_CFLAGS += -DTHE_REAL_DEAL=1 # THE_REAL_DEAL now '1' in C files.
endif
#ifdef CONFIG_MY_DEFINE
#define THE_REAL_DEAL 1
#endif
因此,Kconfig部分定义了用户界面信息。是.config
makefile 语法,由menuconfig等输出。这是在您键入make
. 也就是说,所有由menuconfig或其他工具选择的东西都可以在 Makefiles 中使用。Kconfig变量有一个CONFIG_。
您可以选择Makefile或Source部分来进行定义。如果要选择范围,则可以将 的值传递CONFIG_MY_DEFINE
给编译器。即,包括几乎所有内核头文件都将包括config.h并且“C”值CONFIG_MY_DEFINE
将设置为用户在该范围内选择的任何值。
更多信息请参见kbuild wiki,主要参考内核的 kbuild 文档。