首页
学习
活动
专区
圈层
工具
发布

浅析Makefile、make、cmake

然而,还有另一个工具make,make是用来执行Makefile的,make可以说成一个音乐家,Makefile就是一篇乐谱,音乐家根据乐谱的内容奏乐,make就是根据Makefile中写的内容进行编译和链接...只要没有添加文件或者删除文件,Makefile的内容都是不需要修改的。所以使用make+Makefile极大的提高了我们的工作效率。...只需要把所有源文件读入就行,所以后面又出现了另一个工具,可以跨平台项目管理的工具cmake,cmake就可以生成Makefile文件给make去执行,这样就不用跨平台了还得去修改。...这时候一个疑问又产生了,cmake是怎么生成Makefile的?...其实cmake又是根据一个叫CMakeLists.txt的文件生成Makefile的,就是make是用来执行Makefile的,cmake是用来执行CMakeLists.txt的。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Windows 下使用 Mingw32-make 来执行 Makefile示例

    文章目录 先下载 Mingw 设置好环境变量 确认安装环境状态 gcc mingw32-make C 工程测试 main.c math.c call_math.c 准备好 Makefile 文件 执行...Makefile 执行前 执行后 运行 main.exe 执行 Makefile clean 清理文件 执行前 执行后 整体运行演示 GIF Referernces ---- 先下载 Mingw 这里使用的是...同样看看 mingw32-make 能否正常执行,输出类似一下信息就 OK 了 但是名字太长,还有个”-“号,不方便输入 我们将 mingw32-make.exe 复制出一份,并且改名为:make.exe...,这样后续命令行中 make 就方便多了 再次测试一下:make,可以看到一样的输出信息 ---- C 工程测试 准备好一下几个源码文件 ---- main.c // author :...将 shell 当前目录定位在我们的 Makefile 所在目录下(方便一个 make 就搞定,这样就不用输入其他的目录信息) ---- 执行前 ---- 执行后 ---- 运行 main.exe

    8.2K20

    【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | CC++ 源码编译过程 | Makefile 工具 | CMake 引入 )

    文章目录 一、在 Android Studio 中创建 Native C++ 工程 二、C/C++ 源码编译过程 三、Makefile 工具 四、CMake 引入 该系列博客的应用场景是 Android...Studio 下 NDK 编程 , 使用 CMake 构建 C/C++ 工程 ; 一、在 Android Studio 中创建 Native C++ 工程 ---- 在 Android Studio...cpp 目录下的 native-lib.cpp ; 如果将该 native-lib.cpp 源码打包成 Kotlin 或 Java 中通过 JNI 可调用的 so 动态库 , 需要使用 Make 工具进行编译...的当前目录 , 执行 make 命令 , 会自动执行 Makefile 脚本中的编译命令 ; 四、CMake 引入 Makefile 在 Linux 下有其固定的编写格式 , 在 Windows 下有另外一种编写格式..., 不同的平台的 Makefile 的编写格式都不同 , 非常不利于跨平台 ; CMake 解决了上述 Makefile 跨平台问题 , 使用 CMake 可以完美处理在不同平台之间的 Makefile

    1.4K00

    Makefile 的使用(在 Linux 中使用 make 命令来编译程序)

    命令来编译程序,特别是大程序;而 make 命令所执行的动作依赖于 Makefile 文件。...make 命令根据文件更新的时间戳来决定哪些文件需要重新编译,这使得可以避免编译已经编译过的、没有变化的程序,可以大大提高编译效率。...通常,如果一个依赖发生了变化,就需要规则调用命令以更新或创建目标。但是并非所有的目标都有依赖,例如,目标“clean”的作用是清除文件,它没有依赖。 规则一般是用于解释怎样和何时重建目标。...make 首先调用命令处理依赖,进而才能创建或更新目标。 当然,一个规则也可以是用于解释怎样和何时执行一个动作,即打印提示信息。...、应用程序的 Makefile 文件时,作为手册来查询。

    10K10

    CMake vs Make对比

    “Make”是从程序的源文件中控制程序的可执行文件和其他非源文件的生成工具。 “Make”工具需要知道如何构建程序。它了解如何从名为“makefile”的文件构建程序。...这个makefile列出了每个非源文件以及如何从其他文件中计算它。编写程序时,应该为其编写一个makefile,以便可以使用“Make”来构建和安装程序。简单的东西!...如果您不知道,您不能使用相同的编译器来构建所有不同类型的源。您可以在每次建立项目时手动执行,但这将是乏味和痛苦的。CMake为每种类型的目标调用正确的命令序列。...根据您选择的构建系统(例如,在Windows上的Make on * nix,VC ++或MinGW等),这将创建一个makefile或相当的东西。构建系统可以作为参数传递给CMake。...我们可以比较CMake和Autotools。当我们这样做时,我们可以看到Make的缺点,它们构成了Autotools创建的原因。我们还可以看到CMake对Make的明显优势。

    4.8K31

    Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

    :用对应的值替换掉代码中的所有宏变量展开头文件:从根目录进行描述编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件链接...这样,makefile 中的某一条规则在需要的时候,就会被其他的规则调用,直到 makefile 中的第一条规则中的所有的依赖全部被生成,第一条规则中的命令就可以基于这些依赖生成对应的目标,make 的任务也就完成了...自动推导make 是一个功能强大的构建工具,虽然 make 需要根据 makefile 中指定的规则来完成源文件的编译。...在 Makefile 中只要给出需要构建的目标文件名(一个.o 文件),make 会自动为这个.o 文件寻找合适的依赖文件(对应的.c 文件),并且使用默认的命令来构建这个目标文件。...makefile 中的变量是没有类型的,直接创建变量然后给其赋值就可以了。创建变量之后一定要赋值在给 makefile 中的变量赋值之后,如何在需要的时候将变量值取出来呢?# 如何将变量的值取出?

    2.3K10

    【C++】基础:代码编译与构建工具介绍

    常用构建工具 make make工具相当于一个批处理工具,本身没有编译和链接的功能,而是用类似于批处理的方式通过调用makefile文件中用户指定的编译命令(如gcc、g++)来进行编译和链接(当作批处理工具用就行...makefile文件才行,执行make all这个命令后make会根据makefile中的命令进行编译。...如果要自己编译很多源文件的时候就需要cmake工具,可以更加方便地生成makefile文件给make用。cmake还可以跨平台生成对应平台可用的makefile,无需自己根据每个平台的不同特性修改。...同样在开源工程中很常见,对源码的编译通常是: mkdir build && cd build cmake .. make make install CMake通过CMakeLists.txt文件来描述项目的构建过程...${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调用自己的模块 EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置 LIBRARY_OUTPUT_PATH

    1.3K10

    如何用cmake编译

    CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(.../include/rapidjson -lpthread -ldl CMake说明 一般把CMakeLists.txt文件放在工程目录下,使用时,先创建一个叫build的文件夹(这个并非必须,因为cmake...make 其中cmake .. 在build里生成Makefile,make根据生成makefile文件,编译程序,make应当在有Makefile的目录下,根据Makefile生成可执行文件。...lib文件夹中 set(LIB_NAME rpt_main_lib) # 创建共享库(把工程内的cpp文件都创建成共享库文件,方便通过头文件来调用) # 这时候只需要cpp,不需要有主函数 # $...`-- mq | |-- link.txt | `-- progress.make |-- Makefile `-- cmake_install.cmake 使用make命令编译得到二进制文件 [make

    4.5K80

    Make和Cmake

    Makefile 文件包含了如何构建项目的规则,make 负责解析这些规则并执行必要的命令来编译和链接源代码,生成可执行文件或库。• CMake: 是一个构建系统生成器。...在实际开发中,CMake 通常位于 make 的上游,先由 CMake 生成 Makefile 或其他构建系统描述,然后再由 make 或相应构建工具根据这些描述执行构建任务。...make:在Linux环境中,make是一个极其重要的工具,主要用于自动化构建过程,尤其是软件项目。它基于一个名为Makefile的文件来决定需要执行哪些任务。...make --version二、Cmake使用示例假设我们有一个简单的 C++ 项目,包含一个源文件 main.cpp,我们想创建一个可执行文件,同时允许用户在构建时选择是否启用调试信息和测试。...add_subdirectory: 如果 ENABLE_TESTS 选项被开启,那么会递归调用 CMake 来构建 tests 子目录下的内容。这意味着你可以有独立的测试子项目。

    91110

    g++,CMake和Makefile了解一下

    2.1 Makefile介绍 Makefile描述了整个工程的编译、链接等规则,它定义了一系列规则来指定哪些文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件...另外请注意Makefile文件在执行时不会执行clean这个命令,需要我们调用才会执行,即make clean。clean代码如下: ?...这一步就需要根据自己计算机来配置了,对于我们初学者来说挺麻烦的,可以自己尝试下。有问题可以联系我们。 编写完makefile后,我们在终端make下就行了。下面编译后的文件: ?...CMake是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程,其是在make基础上发展而来的,早期的make需要程序员写Makefile文件,进行编译,而现在CMake能够通过对...编译的过程相对于CMakeLists.txt文件的编写是很简单的,只有两步,如下 cmake make 其中cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用

    2.3K20

    使用Cmake生成跨平台项目编译解决方案

    这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。...而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。     ...CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件...生成项目工程文件或者makefile之后,就可以使用对应的编译器来编译项目了。 3、linux使用cmake生成项目     在linux下使用cmake生成项目和和上面的第2小节类似。     ...在CMakeLists.txt所在目录新建build目录,在build目录执行:     cmake ../     就会在build目录生成Makefile文件,然后就可以继续执行make编译项目。

    6K20

    laravel通过创建自定义artisan make命令来新建类文件详解

    前言 本文主要跟大家介绍的是关于laravel通/【php教程_linux常用命令_网络运维技术】/过创建自定义artisan make命令来新建类文件的相关内容,分享出来供大家参考学习,下面话不多说了...:test Create a new test class 不过,有时候默认的并不能够满足我们的需求, 比方我们在项目中使用的Respository模式来进一步封装了Model文件,就需要经常创建Repository...类文件了,时间长了就会想能不能通过artisan make:repository命令自动创建类文件而不是都每次手动创建。...类来定义自己的artisan make:repository命令。...:repository命令来创建repository类文件了 php artisan make:repository TestRepository php artisan make:repository

    1.3K20

    Assimp Android 编译

    make与makefile 我们在处理命令时,如果单条命令可以直接执行,但是命令比较多的时候就没办法挨个手动调用,这时候可以写到makefile文件里,通过make命令批量处理。...可以把make理解为批处理工具,批量处理makefile中的命令。 cmake和CMakeLists.txt 上面提到,当命令比较多的时候,我们把命令写到makefile中,通过make程序批量处理。...但是makefile本身也比较难挨个手写,这时候就出现了自动生成makefile的工具cmake。也就是通过cmake我们可以很方便的生成makefile文件。...更加详细的介绍可以参考下面的文章: cmake交叉编译 make makefile cmake 生成交叉编译用到的toolchain NDK提供了standalone_toolchain,通过指定一些参数...生成makefile 设置了环境变量之后,我们就可以通过cmake生成makefile了。

    2.8K40

    cmake 简介2021-10-03

    cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。...CMake 是一个比 automake 更加容易使用的工具,能够使程序员从复杂的编译连接过程中解脱出来。...CMake 简介 CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows...CMake 是一个比 automake 更加容易使用的工具,能够使程序员从复杂的编译连接过程中解脱出来。...CMake 简介 CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows

    1.2K20

    cmake快速入门「建议收藏」

    其官方网站是www.cmake.org,可以通过访问官方网站来获得更多关于cmake的信息,而且目前官方的英文文档比以前有了很大的改进,可以作为实践中的参考手册。...因此,我们需要cmake和autotools这样的工具来帮助我们构建并维护项目代码。 看到这里,也许你会想到makefile,makefile不就是管理代码自动化编译的工具吗?.../bootstrap #make #make install cmake 会默认安装在 /usr/local/bin 下面 四、从“Hello, world!”...开始 了解cmake的基本原理并在系统中安好cmake后,我们就可以用cmake来演示那个最经典的”Hello, world!”了。...第一步,程序库说明文件 在项目的根目录中创建目录 cmake/modules/ ,在 cmake/modules/ 下创建文件 Findlibdb_cxx.cmake ,内容如下: 01 MESSAGE

    1.6K60

    【Linux系统】从零掌握make与Makefile:高效自动化构建项目的工具

    于是make与Makefile出手了: make:是一个命令,是一个在Linux系统中常用的自动化构建工具。 Makefile:是一个名为Makefile的文本文件,规定make如何构建和管理项目。...基本使用方法 首先,肯定必须要有写好的源文件吧,为了编译成可执行程序,这里先以一个test.c为例: 然后,第一步,要创建出Makefile这个文件:touch Makefile 用vim打开Makefile...一般我们习惯将项目清理写在后面,make默认执行项目生成。 其实从本质来说,.PHONY定义的伪目标,特性是“总是被执行的”,这个怎么理解呢?...当你使用这个变量时,make会用容器里的文本字符串来替换它。...为了举例,我创建了一百个源文件,假设要把它们编成一个可执行文件 wildcard函数,可以获取当前目录下的所有.c文件,我们可以写SRC=(wildcard *.c)让SRC代表所有.c文件,以及OBJ

    26810
    领券