<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Makefike on ICCI</title><link>https://icci.ink/categories/makefike/</link><description>Recent content in Makefike on ICCI</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 21 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://icci.ink/categories/makefike/index.xml" rel="self" type="application/rss+xml"/><item><title>makefike 笔记</title><link>https://icci.ink/study/code/basic-makefile/</link><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><guid>https://icci.ink/study/code/basic-makefile/</guid><description>&lt;p&gt;makefike 学习笔记&lt;/p&gt;
&lt;p&gt;makefike可以把一大串Linux 指令封装成独立的命令执行，在需要处理复杂任务时，可以把命令编辑到makefile文件里，然后简单的命令就可以执行复杂的操作了，化繁为简，大大提高code效率。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/Kingdomzhen/blog-photo/main/photo/makefile.png" alt="makefile 文件" /&gt;&lt;/p&gt;
&lt;h2 id="makefile-使用方法"&gt;makefile 使用方法&lt;a class="anchor" href="#makefile-%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;makefile在linux中直接以makefile形式存在，在使用时，直接在终端输入命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make &amp;lt;command&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：下面是一段markdowm文件的源代码&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; @echo &lt;span style="color:#e6db74"&gt;&amp;#34;hello test&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;要执行这个makefile的需要在终端下的操作如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;user&lt;span style="color:#f92672"&gt;]&lt;/span&gt;$ make test&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输入这段命令后，终端会打印出&lt;code&gt;hello test&lt;/code&gt;字样，此时的终端将会变成&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;user&lt;span style="color:#f92672"&gt;]&lt;/span&gt;$ make test
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hello test&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这就是makefile文件的使用方法，接下来介绍一下makefile文件格式&lt;/p&gt;
&lt;h2 id="makefile-文件格式"&gt;makefile 文件格式&lt;a class="anchor" href="#makefile-%e6%96%87%e4%bb%b6%e6%a0%bc%e5%bc%8f"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Makefile基本格式如下:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target ... : prerequisites ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; command
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中,&lt;/p&gt;
&lt;p&gt;target - 目标文件, 可以是 Object File, 也可以是可执行文件&lt;br&gt;
prerequisites - 生成 target 所需要的文件或者目标&lt;br&gt;
command - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头&lt;/p&gt;
&lt;p&gt;显示规则 :: 说明如何生成一个或多个目标文件(包括 生成的文件, 文件的依赖文件, 生成的命令)&lt;br&gt;
隐晦规则 :: make的自动推导功能所执行的规则&lt;br&gt;
变量定义 :: Makefile中定义的变量&lt;br&gt;
文件指示 :: Makefile中引用其他Makefile; 指定Makefile中有效部分; 定义一个多行命令&lt;br&gt;
注释 :: Makefile只有行注释 &amp;ldquo;#&amp;rdquo;, 如果要使用或者输出&amp;quot;#&amp;ldquo;字符, 需要进行转义, &amp;ldquo;#&amp;rdquo;&lt;/p&gt;</description></item></channel></rss>