如何刷新/更新Makefile中的变量?

问题描述 投票:0回答:1

我有这个Makefile:

CFLAGS = -ffreestanding -O2 -nostdlib -lgcc
BUILD_DIR = ../build
BIN = $(BUILD_DIR)/os.bin
LINKER_SCRIPT = linker.ld
OBJ_FILES := $(shell find $(BUILD_DIR) -iname '*.o')

.PHONY: all

all:
    @make -C boot
    @make -C kernel
    $(CC) -T $(LINKER_SCRIPT) -o $(BIN) $(CFLAGS) $(OBJ_FILES)

编译后(在引导目录和内核目录中进行制作),应该具有扩展名为.o的文件,但是OBJ_FILES为空。只有在再次调用make之后,OBJ_FILES才会包含链接所需的.o文件路径。所以我的问题是在引导目录和内核目录中编译后如何更新OBJ_FILES,因为OBJ_FILES不会更新/刷新。

c makefile
1个回答
0
投票

正如@AnttiHaapala所指出的那样,您的基本方法不好。但是,如果您真的想这样做,可以这样做:

all:
    ...
    $(CC) -T $(LINKER_SCRIPT) -o $(BIN) $(CFLAGS) $(BUILD_DIR)/*.o
© www.soinside.com 2019 - 2024. All rights reserved.