从脚本调用 make,仅当 main.c 被修改时
Call make from script, only if main.c is modified
问题:我只想 运行 一个脚本(例如 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的副本,或者文件的时间戳将被存储(可能在文件中),以便下次脚本 运行s 时,它将恢复该信息并检查 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
规则才会 运行
问题:我只想 运行 一个脚本(例如 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的副本,或者文件的时间戳将被存储(可能在文件中),以便下次脚本 运行s 时,它将恢复该信息并检查 if 条件以查看时间戳是否不同。那么,第二个问题,如何去做呢?
简单
#!/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.c
在上一个 make
main
规则才会 运行