gpt4 book ai didi

c - 如何正确地使我的生成文件编译和运行?

转载 作者:太空狗 更新时间:2023-10-29 16:30:18 25 4
gpt4 key购买 nike

这个问题可能不是描述我的问题的最佳问题,但我想不出更好的问题。我的 makefile 是这样的:

PROGRAM_NAME = prog

OBJECT_FILES = $(PROGRAM_NAME).o
CFLAGS = -O2 -Wall -g

$(PROGRAM_NAME) : $(OBJECT_FILES)
gcc $(CFLAGS) -o $@ $(OBJECT_FILES)

$(PROGRAM_NAME).o : $(PROGRAM_NAME).c data.h
gcc $(CFLAGS) -c $<

clean :
$(RM) $(PROGRAM_NAME)
$(RM) $(OBJECT_FILES)
$(RM) *~ *.bak

run :
@$(MAKE) && ./$(PROGRAM_NAME) $(ARGS)

当我想编译和运行时,我只需执行“make run”。这个问题是我的程序处理由 Ctrl+Z 产生的信号,如果我用“make run”启动我的程序,信号将被发送到“make run”而不是我的程序本身。

基本上,调用“make run”与直接调用“make && ./prog”不是一回事,因为在第一种情况下,除非“prog”先终止,否则“make run”不会终止。

有解决办法吗?

最佳答案

您可以根据您的程序是否是最新的来简化您的“运行”目标,然后只需运行该程序:

run:    ${PROGRAM_NAME}
./${PROGRAM} ${ARGS}

当您已经在运行 make 时运行 make 没有多大意义 - 至少,在这种情况下不是。可能用于递归操作(在不同的目录中),但请参阅“Recursive Make Considered Harmful” '.

此外,您的 makefile 通常应该提供一个目标“all”,它通常应该是第一个目标,因此也是默认目标。

关于c - 如何正确地使我的生成文件编译和运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/903967/

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