问题:我想只运行一个脚本(例如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条件以查看时间戳是否不同。那么,第二个问题是,如何做到这一点?
答案 0 :(得分:3)
简单地
#!/bin/bash
if [ a.out -ot main.c ]; then
make > compile.txt
fi
./a.out
-ot
相当于
但是,这种行为是make本身所期望的。我更喜欢像
这样的makefileCC = gcc
CFLAGS = -Wall -W
main: main.c
$(CC) $(CFLAGS) -o $@ $^
只有在main
main.c
时才会运行make
规则