linux下编译 makefile 将参数传递给c文件
linux下编译时,通过gcc的选项可以将makefile中的变量作为宏定义传递给c文件,具体使用如下:
测试用 C文件源码:
#include <stdio.h>
int main()
{
#ifdef DEFINE_TEST
printf(">>>>Receive define from makefile!\n");
#else
printf(">>>>NOT Receive define from makefile!\n",DEFINE_TEST);
#endif
printf(">>>>Make Time: %s \n",MAKE_TIME);
return 0;
}
测试用 makefile源码:
#!\bin\bash
TARGET := test
OBJS := make_test.c
GET_DATE := $(shell date +%F)
GET_TIME := $(shell date +%H:%M:%S)
$(TARGET):$(OBJS)
echo $(OBJS)
$(CC) -D MAKE_TIME=\"$(GET_DATE)\ $(GET_TIME)\" -D DEFINE_TEST -o $(TARGET) $(OBJS)
clean:
rm $(TARGET) -rf
一些个人理解:
编译过程:
[[email protected] test_pro]# make clean;make
rm test -rf
echo make_test.c
make_test.c
cc -D MAKE_TIME=\"2018-07-25\ 17:02:21\" -D DEFINE_TEST -o test make_test.c
测试结果:
[[email protected] test_pro]# ./test
>>>>Receive define from makefile!
>>>>Make Time: 2018-07-25 17:02:21