如何在 makefile 中切换编译器?

OHL*_*ÁLÁ 4 c++ makefile

我有以下 makefile:

CFLAGS=-c -Wall -std=c++11
MCFLAGS=-c -Wall -std=c++11

LDFLAGS= -shared
MLDFLAGS= 

MSOURCES=main.cpp MCC.cpp Point3D.cpp
SOURCES= mainDLL.cpp MCC.cpp Point3D.cpp

OBJECTS=$(SOURCES:.cpp=.o)
MOBJECTS=$(MSOURCES:.cpp=.o)

EXECUTABLE=h2r.dll
MEXECUTABLE=h2r

CC=i686-w64-mingw32-g++
CC=g++

all: clean $(MSOURCES) $(MEXECUTABLE)


dll: clean $(SOURCES) $(EXECUTABLE)


$(MEXECUTABLE): $(MOBJECTS)
    $(CC) $(MLDFLAGS) $(MOBJECTS) -o $@

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

clean: 
    rm *.o $(MEXECUTABLE) $(EXECUTABLE)
Run Code Online (Sandbox Code Playgroud)

当发出命令时,如何使用交叉编译器( CC=i686-w64-mingw32-g++)初始化 CC?当发出命令make dll时,如何使用 gnu 编译器?make all

sim*_*mon 6

要根据正在执行的目标设置变量,您可以执行以下操作:

all: CC=g++
all: clean $(MSOURCES) $(MEXECUTABLE)

dll: CC=i686-w64-mingw32-g++
dll: clean $(SOURCES) $(EXECUTABLE)
Run Code Online (Sandbox Code Playgroud)