Makefile,带子目录的模式规则仅适用于第一个依赖
Makefile, pattern rule with sub directory only work with the first dependence
这是我的问题
SOURCES_FUNCTIONS=cJSON.c parallelisationUtilities.c
$(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(IFLAGS)
制作:*** Aucune règle pour fabriquer la cible «parallelisationUtilities.o »,必需倒入 «build/mainFunction »。阿拉特
通过在 SOURCES_FUNCTIONS 中将 parallelisationUtilities.c 放在 cJSON.c 之前,我得到与 cJSON.o 相同的错误。肯定没有丢失的文件..
++
迈克尔
您没有显示足够的 makefile:您遗漏了最关键的部分,即目标文件将目标文件列为先决条件的部分。
我敢打赌你有这样的东西:
xxxx: $(BUILD_DIR)/$(SOURCES_FUNCTIONS:.c=.o)
这是错误的,因为它只将 $(BUILD_DIR)
添加到第一个文件。 $(SOURCES_FUNCTIONS:.c=.o)
的扩展给出:
xxxx: $(BUILD_DIR)/cJSON.o parallelisationUtilities.o
你需要使用这样的东西:
xxxx: $(patsubst %.c,$(BUILD_DIR)/%.o,$(SOURCES_FUNCTIONS))
以便 BUILD_DIR
为所有文件添加前缀。
$(BUILD_DIR)/$(EXEC_MAINFUNCTION): $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECTS_FUNCTIONS)) $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECTS_FUNCTIONS_NOT_TO_CLEAN)) $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECT_MAINFUNCTION))
$(CC) $^ -o $@ $(LDFLAGS)
$(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(IFLAGS)
非常感谢疯子!
这是我的问题
SOURCES_FUNCTIONS=cJSON.c parallelisationUtilities.c
$(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(IFLAGS)
制作:*** Aucune règle pour fabriquer la cible «parallelisationUtilities.o »,必需倒入 «build/mainFunction »。阿拉特
通过在 SOURCES_FUNCTIONS 中将 parallelisationUtilities.c 放在 cJSON.c 之前,我得到与 cJSON.o 相同的错误。肯定没有丢失的文件..
++ 迈克尔
您没有显示足够的 makefile:您遗漏了最关键的部分,即目标文件将目标文件列为先决条件的部分。
我敢打赌你有这样的东西:
xxxx: $(BUILD_DIR)/$(SOURCES_FUNCTIONS:.c=.o)
这是错误的,因为它只将 $(BUILD_DIR)
添加到第一个文件。 $(SOURCES_FUNCTIONS:.c=.o)
的扩展给出:
xxxx: $(BUILD_DIR)/cJSON.o parallelisationUtilities.o
你需要使用这样的东西:
xxxx: $(patsubst %.c,$(BUILD_DIR)/%.o,$(SOURCES_FUNCTIONS))
以便 BUILD_DIR
为所有文件添加前缀。
$(BUILD_DIR)/$(EXEC_MAINFUNCTION): $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECTS_FUNCTIONS)) $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECTS_FUNCTIONS_NOT_TO_CLEAN)) $(patsubst %.o,$(BUILD_DIR)/%.o,$(OBJECT_MAINFUNCTION))
$(CC) $^ -o $@ $(LDFLAGS)
$(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(IFLAGS)
非常感谢疯子!