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

一些个人理解:

makefile

编译过程:

                  [root@localhost 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

测试结果:
                  [root@localhost test_pro]# ./test 
                  >>>>Receive define from makefile!
                  >>>>Make Time: 2018-07-25 17:02:21  

猜你喜欢

转载自blog.csdn.net/amddma/article/details/81206192