makefile 和 sh 文件有啥区别
Posted
技术标签:
【中文标题】makefile 和 sh 文件有啥区别【英文标题】:What is the difference between makefile and sh filemakefile 和 sh 文件有什么区别 【发布时间】:2014-04-30 00:14:04 【问题描述】:makefile 和 sh 文件有什么区别。 sh(壳 脚本文件)文件也可以在makefile的地方工作(意味着我们可以 使用像makefile这样的shell文件做同样的事情)然后是什么 他们之间的区别。有任何执行差异或任何 我们必须使用 makefile 和 sh 文件的标准。
使用 Makefile 和 shell 文件编译 hello.c 文件的一个示例
shell.sh
param="$1";
CC="gcc"
CFLAGS="-c -Wall";
if [ "$param" == "clean" ];
then
rm -rf hello
else
$CC $CFLAGS hello.c -o hello
fi
./shell.sh
将构建 hello.c 文件
./shell.sh clean
这将清理构建文件
Makefile 也是如此。
CC=gcc
CFLAGS=-c -Wall
hello: hello.c
$(CC) $(CFLAGS) hello.c -o hello
clean:
rm -rf hello
make
它将构建make clean
它将清理构建文件
两个文件可以生成相同的输出。 这个问题是因为有些人使用Makefile,有些人使用shell..
【问题讨论】:
这就像说所有的编程语言都是一样的,因为它们都是图灵完备的。 【参考方案1】:make
自动检查(基于时间戳)哪些目标需要重新制作,哪些可以保持不变。如果您编写自己的 shell 脚本,则必须自己编写此逻辑,否则在您运行脚本时将重新构建所有组件 - 甚至是自上次构建以来未更改的组件。
【讨论】:
以上是关于makefile 和 sh 文件有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
GNU Makefile 变量赋值 =、?=、:= 和 += 有啥区别?
Makefile 中的括号 $() 和大括号 $ 语法有啥区别?
Makefile 中的 $(objs): %.o : %.cpp 和 $(objs): $(objs:.o=.cpp) 有啥区别