gpt4 book ai didi

makefile - makefile 中的预构建步骤

转载 作者:行者123 更新时间:2023-12-02 21:12:08 25 4
gpt4 key购买 nike

如何运行必须在所有其他 makefile 命令之前执行的脚本?如果没有要构建的内容,则不执行脚本会很好(但不是强制)。

我搜索过SO和Google,但找不到任何东西。

我有这个解决方法:

# myscript.bat output is empty
CHEAT_ARGUMENT = (shell myscript.bat)
CFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)
AFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)

但是很丑。还有其他方法可以在 ma​​kefile 中运行“预构建步骤”吗?

最佳答案

我提出了两种解决方案。第一个模仿 NetBeans IDE 生成的内容:

CC=gcc

.PHONY: all clean

all: post-build

pre-build:
@echo PRE

post-build: main-build
@echo POST

main-build: pre-build
@$(MAKE) --no-print-directory target

target: $(OBJS)
$(CC) -o $@ $(OBJS)

clean:
rm -f $(OBJS) target

第二个受到 Eclipse IDE 生成内容的启发:

CC=gcc

.PHONY: all clean
.SECONDARY: main-build

all: pre-build main-build

pre-build:
@echo PRE

post-build:
@echo POST

main-build: target

target: $(OBJS)
$(CC) -o $@ $(OBJS)
@$(MAKE) --no-print-directory post-build

clean:
rm -f $(OBJS) target

请注意,在第一个中,无论主构建是否确定为最新,始终都会调用预构建和后构建。

在第二个中,如果主构建的状态是最新的,则不会执行构建后步骤。而预构建步骤始终在两者中执行。

关于makefile - makefile 中的预构建步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com