[英]How can I write a Makefile to produce two executables from one source?
我有两个源文件, foo.c
和bar.c
我有一个Makefile来像这样构建它们:
OBJ1 := foo.o
OBJ2 := bar.o
EXE1 := foo
EXE2 := bar
all: $(EXE1) $(EXE2)
$(EXE1): $(OBJ1)
gcc $(OBJ1) -o $(EXE1)
$(EXE2): $(OBJ2)
gcc $(OBJ2) -o $(EXE2)
然后我意识到foo.c
和bar.c
是相同的,除了一个功能。 所以我删除了bar.c
并在foo.c
bar.c
#if defined()
bar.c
#if defined()
放在函数周围,如下所示:
#if defined(FOO)
void function(int blah) { /* do what foo does */ }
#elif defined(BAR)
void function(int blah) { /* do what bar does */ }
#endif
如何将我的Makefile重写为:
#define FOO
在foo.c
#define FOO
foo.c
构建foo
#define BAR
在foo.c
#define BAR
foo.c
构建bar
???
使用GCC的-D
选项定义宏,并消除目标文件:
SRC := foo.c
EXE1 := foo
EXE2 := bar
all: $(EXE1) $(EXE2)
$(EXE1):
gcc -DFOO $(SRC) -o $(EXE1)
$(EXE2):
gcc -DBAR $(SRC) -o $(EXE2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.