仅在修改main.c时才从脚本调用make

问题:我想只运行一个脚本(例如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 。 通过修改,可以认为时间戳已更改(即使这可能不是实际标准)。 这可行吗?


如果是这样,我看到了这个答案 ,这让我觉得每次进入调用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规则才会运行