我正在尝试使用相同的源构建两个二进制文件,只是定义不同。基本上我现在正在做的是:
OBJ = $(SRC:.cpp=.o)
CPPFLAGS_S = $(INC) -Wall -Wextra -O3 -g -D SERVER
CPPFLAGS_C = $(INC) -Wall -Wextra -O3 -g -D CLIENT
server: CPPFLAGS= $(CPPFLAGS_S)
client: CPPFLAGS= $(CPPFLAGS_C)
server: $(OBJ)
g++ $(OBJ) -o $(NAME_S) $(CPPFLAGS_S) $(LIB)
client: $(OBJ)
g++ $(OBJ) -o $(NAME_C) $(CPPFLAGS_C) $(LIB)
all: server client
显然它不起作用。它所做的是使用 SERVER 定义编译所有内容,并且由于 .o 文件已经存在,它们将再次用于创建客户端二进制文件,仍然使用 SERVER 定义。我可以使用一些帮助。