具有子目录的Makefile,模式规则仅适用于第一个依赖项

时间:2017-07-31 15:56:54

标签: design-patterns makefile directory rule

这是我的问题

SOURCES_FUNCTIONS=cJSON.c parallelisationUtilities.c
$(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c    
    $(CC) $(CFLAGS) -c $< -o $@ $(IFLAGS)

制作:***Aucunerdèglepourfabriquer la cible«parallelisationUtilities.o»,nécessairepour«build / mainFunction»。 Arrêt

通过在SOURCES_FUNCTIONS中的cJSON.c之前放置parallelisationUtilities.c,我得到了与cJSON.o相同的错误。当然,没有丢失的文件..

++ 迈克尔

2 个答案:

答案 0 :(得分:1)

你没有显示足够的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为所有文件添加前缀。

答案 1 :(得分:0)

var select = document.getElementById('categorySelect');
                    var input = document.getElementById('categoryChoice');
                    select.onchange = function() {
                        input.value = select.value;
                        console.log(input.value);
                    }

非常感谢Mad!