编译多个目标

时间:2012-10-29 01:14:59

标签: makefile gnu-make

我想分别使用g ++和mingw将我的程序编译到linux和windows。编译之间的唯一区别是编译器使用和输出文件名。

单个make命令应生成两个输出文件。使用makefile中尽可能少的重复来实现此目的的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

这个怎么样:

linux-name: CC:=g++
windows-name: CC:=mingw

linux-name windows-name:
    $(CC) whatever -o $@

修改

我上面写的只是makefile的 new 部分;我假设makefile的其余部分是隐含的。更明确一点:

all: linux-name windows-name

linux-name: CC:=g++
windows-name: CC:=mingw

linux-name windows-name: foo.o bar.o baz.o SomethingElse
    $(CC) $(CCFLAGS) whatever $^ -o $@

%.o: %.cc
    $(CC) $(CFLAGS) -I$(INC_DIR) whatever -c $< -o $@

SomethingElse:
    build somehow