Artium
Artium

Reputation: 5329

Compiling for Multiple Targets

I want to compile my program both to linux and windows using g++ and mingw respectively. The only difference between the compilations is the compiler to use and output file name.

A single make command should produce both output files. What is the best way to achieve this with as little duplications in the makefile as possible?

Upvotes: 0

Views: 301

Answers (1)

Beta
Beta

Reputation: 99154

How about this:

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

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

EDIT:

What I wrote above is only the new part of the makefile; I assumed that the rest of the makefile was implied. To be more explicit:

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

Upvotes: 2

Related Questions