make & MakefileSchool of Computer Wuhan University ## make & Makefile 程序的编写步骤 • 依赖关系图 工程管理与 make make 的工作原理 规则与依赖关系 通配符的使用 • 变量的定义和引用 • 自动变量 模式规则 • Makefile 的结构 make 命令参数与选项 • 常见的错误 • 依赖关系的自动生成 • Turbo 等,工程管理简单,但是需要平台的支持,离开的特定的 IDE,将不能重新生成目标文件; make 通过Makefile中设定的源文件和目标文件依赖关系以及相应的生成操作,比较源文件和目标文件的时间,如果前者更新,表示源文件已经修改,make将按照Makefile对应的动作自动生成新的目标文件。 ## make 的优缺点 不依赖于特定的开发平台,不需要知道Makefile的细节就可实现对源代码包的安装,如,开源软件的编译安装过程如下: stallman.org/) 和 Roland McGrath (http://www.frob.com/~roland/) 编写; ## Example of Makefile ## Makefile for plain $ cat Makefile plain: lex.o plain.o name.o main.o gcc -o ./plain plain.o lex.o name.o main0 码力 | 36 页 | 975.98 KB | 2 年前3
跟我一起写 Makefile (PDF 重制版)# 跟我一起写 Makefile (PDF 重制版) 作者:陈皓 2023年12月12日 ## 目录 1 概述 1.1 关于程序的编译和链接 2 makefile 介绍 2.1 makefile 的规则 2.2 一个示例 2.3 make 是如何工作的 2.4 makefile 中使用变量 2.5 让 make 自动推导 2.6 makefile 的另一种风格 2.7 清空目录的规则 2.8 Makefile 里有什么? 2.9 Makefile 的文件名 2.10 包含其它 Makefile 2.11 环境变量 MAKEFILES 2.12 make 的工作方式 3 书写规则 3.1 规则举例 3.2 规则的语法 3.3 在规则中使用通配符 3.4 文件搜寻 3.5 伪目标 3.6 多目标 3.7 shell 函数 ..... 52 7.9 控制 make 的函数 ..... 52 8 make 的运行 ..... 55 8.1 make 的退出码 ..... 55 8.2 指定 Makefile ..... 55 8.3 指定目标 ..... 56 8.4 检查规则 ..... 57 8.5 make 的参数 ..... 57 9 隐含规则 ..... 61 90 码力 | 81 页 | 628.51 KB | 2 年前3
Linux 下 Makefile 的 automake 生成全攻略# Linux 下 Makefile 的 automake 生成 全攻略 作为 Linux 下的程序开发人员,大家一定都遇到过 Makefile,用 make 命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单 Makefile,如果要想写出一个符合自由软件惯例的 Makefile 就不那么容易了。 在本文中,将给大家介绍如何使用 autoconf 和 automake 两 两个工具来帮助我们自动生成符合自由软件惯例的 Makefile,这样就可以象常见的 GNU 程序一样,只要使用 “./configure”,“make”,“make install” 就可以把程序安装到 Linux 系统中去了。这特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的 Toy 程序,那么这个文章对你也会有很大的帮助。 ## 一、 Makefile 介绍 Makefile 是用于自动编译和链 的文件都需要重新编译,Makefile 中记录有文件的信息,在 make 时会决定在链接的时候需要重新编译哪些文件。 Makefile 的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。 Makefile 的基本结构不是很复杂,但当一个程序开发人员开始写 Makefile 时,经常会怀疑自己写的是否符合惯例,而且自己写的0 码力 | 14 页 | 701.04 KB | 2 年前3
From Your First Line of Code to Your Largest Repo: How Visual Studio Code Can Help You Develop More Efficiently in C++6/4/01641c74a414297ee40a5f91f23a2422/p7_6.jpg) #### Makefile Tools v0.7.0 Microsoft 📦 microsoft.com | ⚙️ 3,020,950 ★★★☆☆(31) Provide makefile support in VS Code: C/C++ IntelliSense, build, debug/run for Updates...Import Profile... ## What's New for Makefile Tools in VS Code  build, debug, and run your make targets • Provide IntelliSense configurations to C++ Extension for Makefile projects NEW: Support for C++23 ## V ariable Expansion New macros that are supported to work0 码力 | 31 页 | 2.76 MB | 1 年前3
Debian 维护者指南更多示例 8.1 挑选最好的模板 ..... 79 8.2 无 Makefile (shell, 命令行界面) ..... 81 8.3 Makefile (shell, 命令行界面) ..... 87 8.4 setup.py (Python3, 命令行界面) ..... 89 8.5 Makefile (shell, 图形界面) ..... 94 8.6 setup.py py (Python3, 图形界面) ..... 96 8.7 Makefile (单个二进制软件包) ..... 100 8.8 Makefile.in + configure (单个二进制软件包) ..... 102 8.9 Autotools (单个二进制文件) ..... 105 8.10 CMake (单个二进制软件包) ..... 108 8.11 Autotools debmake 命令构建 Debian 软件包的方法。 本指南注重描述现代的打包风格,同时提供了许多简单的示例。 • POSIX shell 脚本打包 • Python3 脚本打包 • C 和 Makefile/Autotools/CMake · 含有共享库的多个二进制软件包的打包,等等。 本篇《Debian 维护者指南》可看作《Debian 新维护者手册》的继承文档。 ## 前言 如果您在某些方面算得上是有经验的0 码力 | 142 页 | 1.11 MB | 2 年前3
Debian 新维护者手册有软件包都必须,却可能对你有用,或者你的软件包制作过程中会需要它们: - autoconf、automake 和 autotools-dev - 很多新程序使用 configure 脚本和 Makefile 文件来帮助预处理程序。(参看 info autoconf、info automake)。autotools-dev 则用于保持指定的自动配置文件为最新,并带有关于使用那些文件的最佳方法的文档。 gz.) 3还有几个类似但更针对某一类软件的工具,如 dh-make-perl、dh-make-php 等。 • xutils-dev - 一些通常用于 X11 的程序,使用其宏功能可以生成 Makefile 文件。(参看 imake(1)、xmkmf(1)) 以上给出的简短描述仅仅是为了使你对这些工具有一个基本的印象。在继续前请详细阅读每个程序(包括通过依赖关系安装的程序,比如 make)的文 distclean) 来清理编译目录。Makefile 中有时还会支持 make uninstall,它被用来卸载已经安装了的程序文件。 ### 2.5 常见的可移植编译系统 有非常非常多的自由软件是使用 C 和 C++ 语言编写的。其中又有很多程序使用了 Autotools 或 CMake 来使其可以移植到不同平台上。这些工具被用于生成 Makefile 和其他必须的源文件。然后程序就可以使用正常的0 码力 | 63 页 | 493.28 KB | 2 年前3
Programmer’s Guide for Free Pascal, Version 3.2.24.10 Target ..... 166 E.5 Programs needed to use the generated makefile ..... 167 E.6 Variables that affect the generated makefile ..... 167 E.6.1 Directory variables ..... 168 E.6.2 Compiler command should avoid using this directive. If you are not sure, it is better practice to use makefiles and makefile variables. #### 1.3.17 $LIBсуFFIX : Set the library suffix Similar to the $ \\text{Extension} locations where the files reside. If you are not sure, it is better practice to use makefiles and makefile variables. #### 1.3.26 $P or $OPENSTRINGS : Use open strings If this switch is on, all function0 码力 | 187 页 | 531.58 KB | 2 年前3
Debian 新維護人員手冊件包雖不是對於所有軟件包都必須,卻可能對你有用或被你的軟件包所需要: - autoconf、automake 和 autotools-dev - 很多新程序使用 configure 脚本和 Makefile 文件夹帮助预處理程序。(參看 info autoconf、info automake)。autotools-dev 則用於保持指定的自動配置文件為最新,並帶有關於使用那些文件的最佳方法的文檔。 gz.) 3還有幾個類似但更針對某一類軟件的軟件包,如 dh-make-perl、dh-make-php 等。 • xutils-dev - 一些通常用於 X11 的程序,用於使用其宏功能生成 Makefile 文件。(參看 imake(1)、xmkmf(1)) 以上給出的簡短描述僅僅是為了使你對這些軟件包有一個基本的印象。在繼續前請詳細閱讀每個程序(包括通過依賴關係安裝的程序,比如 make)的 來使其可以在不同平臺上移植。這些工具首先用於生成 Makefile 和其他必須的源文件,然後這些程序可以使用正常的 make;make install 來編譯和安裝。 Autotools 是 GNU 編譯系統工具,包括 Autoconf、Automake、Libtool 和 gettext。你可以通過 configure.ac、Makefile.am 和 Makefile.in 等文件來識別這種類型的源代码。0 码力 | 63 页 | 512.12 KB | 2 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南源码目录> 生成 Makefile - 执行本地的构建系统 make 真正开始构建(4 进程并行) - 让本地的构建系统执行安装步骤 回到源码目录 ## 现代 CMake 提供了更方便的 -B 和 --build 指令,不同平台,统一命令! • cmake -B build // 在源码目录用 -B 直接创建 build 目录并生成 build/Makefile • cmake --build 项目的构建分为两步: - 第一步是 cmake -B build,称为配置阶段(configure),这时只检测环境并生成构建规则 - 会在 build 目录下生成本地构建系统能识别的项目文件(Makefile 或是 .sln) • 第二步是 cmake --build build,称为构建阶段(build),这时才实际调用编译器来编译代码 - 在配置阶段可以通过 -D 设置缓存变量。第二次配置时,之前的 txt 生成不同类型的构建系统(比如 Linux 的 make,Windows 的 MSBuild),从而让构建规则可以只写一份,跨平台使用。 - 过去的软件(例如 TBB)要跨平台,只好 Makefile 的构建规则写一份,MSBuild 也写一份。 - 现在只需要写一次 CMakeLists.txt,他会视不同的操作系统,生成不同构建系统的规则文件。 - 那个和操作系统绑定的构建系统(m0 码力 | 166 页 | 6.54 MB | 2 年前3
Cmake 实践autotools 之后,他们终于决定为 KDE4 选择一个新的工程构建工具,其根本原因用 KDE 开发者的话来说就是:只有少数几个“编译专家”能够掌握 KDE 现在的构建体系 (admin/Makefile.common),在经历了unsermake,scons以及cmake的选型和尝试之后,KDE4决定使用cmake作为自己的构建系统。在迁移过程中,进展异常的顺利,并获得了cmake开发者的支 开放源代码,使用类 BSD 许可发布。http://cmake.org/HTML/Copyright.html 2,跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。 3. 能够管理大型项目,KDE4 就是最好的证明。 4. 简化编译构建过程和编译过程。CMake 个人的建议: 1. 如果你没有实际的项目需求,那么看到这里就可以停下来了,因为 cmake 的学习过程就是实践过程,没有实践,读的再多几天后也会忘记。 2. 如果你的工程只有几个文件,直接编写 Makefile 是最好的选择。 3. 如果使用的是 C/C++/Java 之外的语言,请不要使用 cmake(至少目前是这样) 4. 如果你使用的语言有非常完备的构建体系,比如 java 的 ant,也不需要学习0 码力 | 47 页 | 264.27 KB | 2 年前3
共 645 条
- 1
- 2
- 3
- 4
- 5
- 6
- 65













