gpt4 book ai didi

从脚本调用 make,仅当 main.c 被修改时

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:46 26 4
gpt4 key购买 nike

问题:我只想运行一个脚本(例如 run.sh),它将为我决定是否应该调用 make(如果需要则调用它),然后运行可执行文件。


我的工程只有一个文件,就是main.c。然而,只是链接让我稍等,这是我在调试时不喜欢的事情,我渴望程序运行。我想在 run.sh 中加入这样的内容:

#!/bin/bash
if[ main.c has changed from the last time make was called] then
make > compile.txt
fi
./a.out

这样只有当 main.c 被修改时才会调用 make。通过修改,可以认为时间戳已更改(即使这可能不是实际标准)。这可行吗?


如果是这样,我看到了这个answer ,这让我想到每次我进入调用 make 的 if 语句的主体时,都会创建 main.c 的副本,或者会存储文件的时间戳(可能在文件中),以便下一个脚本运行时,它将恢复该信息并检查 if 条件以查看时间戳是否不同。那么,第二个问题是,怎么做?

最佳答案

简单

#!/bin/bash

if [ a.out -ot main.c ]; then
make > compile.txt
fi

./a.out

-ot 等同于早于

但是,这种行为是 make 本身所期望的。我更喜欢像这样的 makefile

CC = gcc
CFLAGS = -Wall -W

main: main.c
$(CC) $(CFLAGS) -o $@ $^

仅当 main.c 在上次 make 之后更新时,main 规则才会运行

关于从脚本调用 make,仅当 main.c 被修改时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31163321/

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