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



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


我的项目只有一个文件,那就是main.c。然而,仅仅是链接就让我等待了一段时间,这是我调试时不喜欢的,我渴望程序运行。我想在运行中加入这样的内容。sh:

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

使得仅当修改了main.c时才调用CCD_ 2。通过修改,可以认为时间戳发生了变化(即使这可能不是实际的标准)。这可行吗?


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

简单

#!/bin/bash
if [ a.out -ot main.c ]; then
    make > compile.txt
fi
./a.out

-ot相当于早于

然而,这种行为是意料之中的事。我更喜欢这样的makefile

CC = gcc
CFLAGS = -Wall -W
main: main.c
    $(CC) $(CFLAGS) -o $@ $^

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

最新更新