Makefile------巨集、if條件、shell命令的使用
阿新 • • 發佈:2019-02-19
main.c
#include <stdio.h>
int main(void)
{
int i;
#ifdef FLAG
i = 1;
#else
i = 3;
#endif
printf(" i = %d \n", i);
return 0;
}
Makefile
CC=gcc input_flag= ifdef input_flag CFLAGS= -D $(input_flag) endif SRC= main.c .PHONY:all clean ifdef input_flag all: $(CC) $(CFLAGS) $(SRC) -o main else all: $(CC) $(CFLAGS) $(SRC) -o main @echo "do all" endif clean: rm *~ *.o -f
執行:
snail@ubuntu:4.makefile-if$ make input_flag=FLAG
gcc -D FLAG main.c -o main
snail@ubuntu:4.makefile-if$ ./main
i = 1
snail@ubuntu:4.makefile-if$ make
gcc main.c -o main
do all
snail@ubuntu:4.makefile-if$ ./main
i = 3
snail@ubuntu:4.makefile-if$
通過巨集控制條件編譯。