我想分别使用g ++和mingw将我的程序编译到linux和windows。编译之间的唯一区别是编译器使用和输出文件名。
单个make
命令应生成两个输出文件。使用makefile中尽可能少的重复来实现此目的的最佳方法是什么?
答案 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