makefile工具的使用,编写一个或多个文件!(简单易上手)

一、make 和 makefile 是什么

        1. make 是一个 命令。

        2. makefile 是一个 文件,可以自动化的构建项目。

        3. 编写 makefile 需要:

                (1)依赖关系

                (2)依赖方法

二、什么是依赖关系、什么是依赖方法

下面我简单写一个makefile,先别管里面的代码什么意思,我先解释什么是依赖关系、以及什么是依赖方法。

如下图:

1. 依赖关系

依赖关系是红色圈起来的部分,如下图:

上图的依赖关系中:冒号(:)的左侧是目标文件,右边是依赖文件列表!记住是 依赖文件列表!

但是现在目前上面的文件列表只有一个!下面的是空!

依赖文件列表可以不依赖任何文件!

2. 依赖方法

依赖方法是蓝色圈起来的部分,如下图:

最上面的 makefile 中,看清楚!makefile 是 tab 键开始!!!

3. 那么 .PHONY 是什么?

这里的 .PHONY 是伪目标,类似 makefile 中的关键字,表明 clean 是一个伪目标。

总是会根据依赖关系,执行依赖方法,习惯:clean 设置 .PHONY

三、使用 makefile

我这里简单编写一个代码,然后用 make 来编译,前面开始将了 make 是命令!!!

如下图:

简答写了一个 test.cpp 文件

而 makefile 中依然是如下内容:

这里我先把目录下的文件查看一下,如下图:

那么 make 是命令怎么用?如下图:

make 之后发现跟自己写的依赖方法是一样的,那么是不是执行了自己写的编译这个test.cpp文件的这条语句?查看一下,如下图:

查看目录下面果然生成了一个 test 文件, 那么既然编译了,执行一下,如图:

这样就可以运行起来了!

那么编译好生成了可执行的 test 文件后,删除文件怎么删除?

那么 clean 就可以用上了,如下图:

make clean 之后,也就执行了自己写的依赖方法。

四、扩展

那么肯定有人觉得编写一个 test.cpp 文件,还要在 makefile 文件里面写代码,一条命令不久好了?删文件也是一条命令不就好了?

是的!确实一条命令就可以了!

但是!!!那么如果你有很多文件呢? 命令行打一长串?一条一条打?那么删除呢?

这里在写一个例子,我这里就两个文件做一下对比,更多个文件的话,方法类似!!!

如下图:

test1.cpp 

test2.cpp

makefile

   

那么 make 之后是什么,如下图:

可以看到,直接生成两个可执行文件,test1、test2, 运行一下,如下图:

make clean 一下,如下图:

all 不需要依赖方法,只维护依赖关系;

当识别到 all 依赖这两个关系的时候,会推导式的执行下面两个命令;

当all 的依赖关系满足了,要执行all 的依赖方法,但是 all 没有! 至此 makefile 执行结束!
 

以上就是 makefile 工具的简单是使用!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在VSCode中编写一个文件的C语言项目,并使用Makefile进行编译和构建时,可以按照以下步骤进行操作: 1. 创建项目文件夹:在任意位置创建一个文件夹作为项目的根目录。 2. 在项目根目录下创建源文件:可以使用VSCode的文件资源管理器在项目根目录下创建多个文件(以`.c`为扩展名)和头文件(以`.h`为扩展名)。 3. 创建Makefile:在项目根目录下创建一个名为`Makefile`(注意首字母大写)的文件,并在其中编写构建规则。 4. 编写构建规则:在Makefile中,你可以定义编译器、编译选项、链接选项以及构建目标等。以下是一个简单的示例: ```makefile CC = gcc CFLAGS = -Wall -Wextra LDFLAGS = SRCDIR = src OBJDIR = obj SOURCES = $(wildcard $(SRCDIR)/*.c) OBJECTS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SOURCES)) TARGET = myproject $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $^ -o $@ $(OBJDIR)/%.o: $(SRCDIR)/%.c $(CC) $(CFLAGS) -c $< -o $@ .PHONY: clean clean: rm -rf $(OBJDIR)/*.o $(TARGET) ``` 在这个示例中,我们假设源文件存放在名为`src`的文件夹中,目标文件存放在名为`obj`的文件夹中。`CC`变量指定了编译器,`CFLAGS`变量指定了编译选项,`LDFLAGS`变量指定了链接选项。`$(SOURCES)`变量使用通配符获取所有的源文件,`$(OBJECTS)`变量使用模式替换获取所有的目标文件。`$(TARGET)`是最终的可执行文件名。 构建规则中的第一个目标`$(TARGET)`表示最终的可执行文件,它依赖于所有的目标文件。第二个目标`$(OBJDIR)/%.o`表示每个源文件对应的目标文件,它依赖于对应的源文件。规则中使用了变量展开和自动变量,这样可以根据实际情况进行构建。 最后,使用`make`命令在项目根目录下执行Makefile,并构建项目。如果一切顺利,将会在项目根目录下生成可执行文件。 希望这个简单的示例可以帮助你开始编写文件的C语言项目,并使用Makefile进行构建。如果你有其他问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值