makefile 進行宏定義的便捷之處

U知园Kevin發表於2024-05-24

1. Makefile 中:

MYVERSION = 1.0.00000001
CFLAGS += -DMYVERSION=\"$(MYVERSION )\"
all: mainapp
mainapp: mainapp.c
gcc $(CFLAGS) -o mainapp mainapp.c
2. c 檔案中
// mainapp.c
#include <stdio.h>
#ifdef MYVERSION
#define STR(x) #x
#define STR1(x) STR(x)
static char version[] = STR1(MYVERSION);
#endif
int main() {
#ifdef MYVERSION
printf("Program myversion: %s\n", version);
#else
printf("Program myversion: unknown\n");
#endif
return 0;
}

當執行make命令時,Makefile會編譯mainapp.c並將其連結成mainapp,並且原始碼中的MYVERSION宏就包含了Makefile中定義的值

相關文章