Makefile

语法规范

<target> : <prerequisites>
[tab]  <commands>

target 是一个目标,一般是一个文件,指明要构建的对象

也可以是一个操作的名字,这称为"伪目标"(phony target)。
比如 make clean 要删除一些文件,如果在当前目录中正好有个文件叫作clean
make clean 就不会执行了,就认为没有必要重新构建了。为了避免这种情况
一般明确声明clean是"伪目标":

.PHONY: clean
clean:
        rm *.o temp

如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标。

比如Makefile 内容如下

.PHONY: install
install:
        bash test.sh

执行 make 和 执行make install 都会去执行 install target

 

下面的配置中,构建gotofile 的前置条件是 fromfile,如果当前目录中,fromfile存在,
则 make gotofile 可以正常运行。如果fromfile 不存在则需要写一条规则,来生成fromfile
如下:

gotofile:fromfile
        cp fromfile gotofile
fromfile:
        echo "11111" > fromfile

如果一次需要构建多个文件,可以使用下面的写法
gotofile 是个伪目标,只有3个前置文件,没有任何对应命令

gotofile:file1 file2 file3
file1:
        echo "11111" > file1
file2:
        echo "22222" > file2
file3:
        echo "22222" > file3

执行 make gotofile 就会一次性生成 file1 file2 file3
不需要要执行3次 make file1 ; make file2 ; make file3

 

一些语法

【1】 关闭回声
file1:
echo "11111" > file1

上面的makefile 在构建时会打印出命令,然后去执行,叫作“echoing” 回声。
[root@jinkang-centos7 make]# make
echo "11111" > file1

关闭回声
file1:
@echo "11111" > file1

 

【2】 变量
txt = "hello world"
test:
@echo $(txt)
#输出 hello world

调用Shell变量是 需要在$符号前,再加个$符号

test:
@echo $$SHELL
@echo $$HOME

#输出
# /bin/bash
# /root
每行命令在一个单独的shell 中执行,因此两个相关联的命令要写在一起
test:
export name="kangkang";echo $$name

或者在换行前用反斜杠转义。
test:
export name="kangkang"; \
echo $$name

 【3】循环

循环demo1

list=one two three
test:
for i in $(list);do \
echo $$i; \
done

循环demo2
.PHONY: test
test:
for file in `find ./test/ -type f`;do \
echo test >> $$file; \
done

 

4 【make 传参】

install:
mkdir -p $(DIR)/usr/bin/
gcc helle.c -o $(DIR)/usr/bin/hello

make 时传参  make install  DIR=xxx

 

posted on   思此狂  阅读(147)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
历史上的今天:
2017-07-14 qq上网正常浏览器上不了网

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示