如何在Windows下使用make编译Makefile

news/2024/9/18 8:59:34/文章来源:https://www.cnblogs.com/zhaotianff/p/18375741

最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists,结果发现是makefile。

 

什么是Makefile

‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序,从而提高软件开发效率。

Makefile的主要作用包括:

  • ‌管理复杂的编译过程‌:在一个大型项目中,源文件可能数量众多,分布在不同的目录和模块中。Makefile通过定义一系列规则,指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。
  • ‌自动化编译‌:Makefile能够根据文件的最后修改时间自动发现更新过的文件,减少不必要的编译工作。当某个文件或其依赖项更新时,Makefile只会重新编译受影响的文件,而不是整个项目,从而提高了编译效率。
  • ‌灵活性和可维护性‌:Makefile允许定义变量和规则,使得构建过程更加灵活和可维护。开发人员可以根据项目的需求修改Makefile,而不需要修改实际的编译命令。
  • ‌跨平台使用‌:Makefile是一种跨平台的工具,可以在不同的操作系统上使用,例如Linux、Unix和Windows等,这使得它成为一种通用的构建解决方案。

 

如何解析Makefile

这里需要借用make工具。

 

1、下载make工具

打开make官网,找到下载部分

https://www.gnu.org/software/make/#download

 

可以选择以下几种下载方式

 

或者直接访问https://ftp.gnu.org/gnu/make/

 

下载最新版本,解压到本地

 运行build_w32.bat可以生成make工具的二进制文件。

 

但是这里有个前提,需要准备GCC或MSVC环境

 

这里两种环境的准备都介绍一下

GCC环境

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786025.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lvgl 使用demo

实现效果 代码#define OBJ_PARENT_WIDTH 970#define OBJ_PARENT_HEIGH 446#define OBJ_BTN_WIDTH 150#define OBJ_BTN_HEIGH 50#define OBJ_BTN_POS_X 120#define OBJ_BTN_POS_Y 40#define OBJ_ITEM_WIDTH 420#define OBJ_ITEM_HEIGH 50 #define OBJ_TABLE_HEIGH 60 #define OB…

php读取access数据库

这个代码测试的老的access数据库,使用的php版本是5.4,php7.4的测试不通过 测试的文件: 链接:https://pan.quark.cn/s/c4cfef0bc484 提取码:N9mF 1.引入 com_dotnet 扩展,下载phpstudy,切换版本为php5.4,然后php.ini中加入extension=php_com_dotnet.dll2.复制下面代码<?ph…

conv1D,conv2D,和conv3D

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=zeros, device=None, dtype=None)

wqs 二分学习笔记

蒟蒻的第一篇学习笔记qwq wqs二分用于解决此类问题 n个物品,从中选恰好m个,最大化收益。而且你发现,如果没有选m个的限制,这道题是非常好做的。 使用前提 1、恰好选k个,至多至少不行 2、答案满足凸性 什么是凸性? 设选i个物品时的收益为fi 如果把它画成函数,那么它长这样…

使用 reloadNuxtApp 强制刷新 Nuxt 应用

title: 使用 reloadNuxtApp 强制刷新 Nuxt 应用 date: 2024/8/22 updated: 2024/8/22 author: cmdragon excerpt: reloadNuxtApp 是一个强大的工具,用于在 Nuxt 3 应用中强制刷新页面。通过不同的选项,你可以控制刷新行为、指定路径、保存状态等。 categories:前端开发tags:…

[Ynoi2016] 掉进兔子洞

题目链接 : [Ynoi2016] 掉进兔子洞 好不容易争取来的三天没有模拟赛,不打Ynoi打什么。 先从莫队+bitset的板板开始,第一个自己打出来的Ynoi捏。 一个套路,就是将每个数离散化后的值变成小于等于它的数的个数,然后就可以用bitset记录出现次数了。 具体的操作就是,假如一个数…

还有程序员不会玩黑神话悟空?是我太菜了

我承认是我天真了,本来计划周二晚上公开直播新项目教学的,但是发现黑神话悟空这游戏的热度火的有点过头了啊!所以临时决定把新项目直播移到周四晚上 8 点。直播打游戏!大家好,我是程序员鱼皮。我承认是我天真了,本来计划周二晚上公开直播新项目教学的,但是发现黑神话悟空…

Git GUI与命令全能操作,转载

Git 命令基本操作 Git GUI全能基本操作 看 https://blog.csdn.net/chehec2010/article/details/89950964gui 目录 1、版本库初始化 gitpractise文件夹就变成了Git可以管理的仓库,目录下多了一个.git文件夹,此目录是Git用于管理版本库的,不要擅自改动里面的文件,这样会破坏…

spring boot简单运用ollama大模型(windows版本)

1、下载模型(windows为例)打开官方网站https://ollama.com/download/windows。打开exe文件,打开命令行工具,直接运行ollama run 要下载的模型(右上角的models能找到你想要的,例子以llama3.1展示,spring ai暂时非全支持,支持模型步骤2列出)运行完后直接是这样显示至此,…

048、Vue3+TypeScript基础,页面通讯之子页面调用父页面的事件

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vueconst app = createApp(App);// App.vue的根元素id为app app.mount(#app)02、App.vue代码如下:<template><div class="app&…

YOLOv5实战记录 Gradio搭建Web GUI

转自:https://blog.csdn.net/EmileJiao/article/details/137448176最终的:import torch import gradio as grmodel=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")title="基于Gradio的YO…

火山引擎VeDI实验平台助推企业量化决策能力升级

DataTester技术团队基于并行化的Leiden算法,快速处理亿级用户的复杂社交网络,完成基于社交圈的聚类分流。 更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 量化决策,正成为企业在数智化浪潮中掌握方向的必备之舵。通过“拍脑袋”式的…