定義が異なるだけで、同じソースで 2 つのバイナリをビルドしようとしています。基本的に私が今やっていることは次のとおりです。
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 定義を引き続き使用してクライアント バイナリを作成するために再度使用されます。私はいくつかの助けを使うことができます。