我试图通过在目标中添加源代码来构建不同的源文件并将其链接到二进制文件中:
...
C_SOURCE_FILES = common_file_1.c
C_SOURCE_FILES += common_file_2.c
target_1: C_SOURCE_FILES += target_1_specific_file.c
target_1: all
target_2: C_SOURCE_FILES += target_2_specific_file.c
target_2: all
C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES))
C_PATHS = $(call remduplicates, $(dir $(C_SOURCE_FILES) ) )
OBJECTS = $(addprefix _build/, $(C_SOURCE_FILE_NAMES:.c=.o) )
all:
$(CC) $(LDFLAGS) $(OBJECTS) $(LIBS) -o _build/output_file.out
_build/%.o: %.c
$(CC) $(CFLAGS) $(INC_PATHS) -c -o $@ $<
但由于某些原因,特定于目标的文件永远不会构建,即使我以这种方式启动:make target_1
。
编辑:
添加了OBJECTS
的定义。