首页 > 其他分享 >关于make/makefile/cmake的区别

关于make/makefile/cmake的区别

时间:2023-10-31 11:44:30浏览次数:31  
标签:文件 cmake make makefile 源文件 编译

1. gcc

可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

我们的程序只有一个源文件时,直接就可以用gcc命令编译它。

如果我们的程序包含很多个源文件时,就发现很容易混乱而且工作量大,所以出现了下面make工具。

2. make

make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

3. makefile

makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。

makefile在一些简单的工程完全可以人工拿下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改,这时候就出现了下面的Cmake这个工具。

4. cmake

cmake就可以更加简单的生成makefile文件给上面那个make用。Cmake还可以跨平台生成对应平台能用的makefile,我们就不用再自己去修改了。

可是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。

5. CMakeList.txt

到最后CMakeLists.txt文件由我们自己写。。。。

 

1.用编辑器编写源代码,如.c文件。

2.用编译器编译代码生成目标文件,如.o。

3.用链接器连接目标代码生成可执行文件,如.exe。

但如果源文件太多,一个一个编译那得多麻烦啊?于是人们想到,为啥不设计一种类似批处理的程序,来批处理编译源文件呢?

于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。

 

但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。

 

标签:文件,cmake,make,makefile,源文件,编译
From: https://www.cnblogs.com/FJCLJ/p/17799903.html

相关文章

  • cmake打印堆栈
    设置参数add_compile_options(-g)add_compile_options(-O0)add_compile_options(-no-pie)set(CMAKE_C_FLAGS"${CMAKE_C_FLAGS}-O0-g0")set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-O0-g0")set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11......
  • makefile学习之编译器报错问题
    1、当使用makefile自动推导的功能时编译器报错ccJS7JEh.s:Assemblermessages:ccJS7JEh.s:5:Error:invalidinstructionsuffixfor`push'ccJS7JEh.s:7:Error:invalidinstructionsuffixfor`push'\ccJS7JEh.s:14:Error:operandtypemismatchfor`call'ccJ......
  • CS61A hw03 make_anoymous_factorial()
    CS61Ahw03make_anoymous_factorial()自问自答&写在前面​ 写这些是因为这道练习没写出来,刚开始看到官方的solution也没看明白,通过从答案反推之后,有了一些对lambda表达式的一些理解,在此分享,观看之前还是希望经过自己思考之后再看,毕竟聪明的你都来学cs61a了,应该已经学会独立思考......
  • 原来Linux makefile可以如此简单
    作者:朱金灿  原来以为Linuxmakefile挺复杂的,直到从网上找到一个编译模板,发现Linuxmakefile是如此简单,而且你还可以根据该模板实现C程序和C++程序的混合编译。下面是Linuxmakefile模板的脚本代码:#指定c编译器CC=gcc#指定C++编译器C++=g++#指定链接器LINK=g++......
  • Makefile 入门
    一、Makefile简介什么是Makefile?很多做windows的程序员可能都没有接触过,因为windows的很多开发环境中都已经帮你做了这些事情,一键编译构建即可;但是要对工程的编译、链接、构建有一个专业的认识,或者要在linux上编程的话,就需要了解Makefile了。Makefile,人称“工程管理器”,它的作用......
  • cmake学习
    基础的一个cmake文件:cmake_minimum_required(VERSION3.25)project(app)set(CMAKE_CXX_STANDARD20)set(EXECUTABLE_OUTPUT_PATHbin/)set(SRC_LISTsrc/main.cppsrc/util.cpp)add_executable(app${SRC_LIST})target_include_directories(appPUBLICinclude/)......
  • makedown教程
    标题我展示的是一级标题我展示的是二级标题一级标题二级标题三级标题四级标题五级标题六级标题段落这是段落直接在末尾加上两个空格这是段落使用空格来换行直接换行效果字体斜体文字斜体文本粗体文本粗体文本粗斜体文本粗斜体文本分隔符删除线RUNOOB.......
  • 跟我一起写makefile(转载)
    最近想学习makefile,所以想当然就去找鼎鼎大名的《跟我一起写makefile》。不过后来因为我看着博客有点乱,而且我希望我没网的时候也能进行浏览。所以打算找离线版的。尽量pdf和离线html都有。github找到一个:https://github.com/seisman/how-to-write-makefile。跟着提示进行编译......
  • Shell-Makefile使用变量
    可以现在build.sh中source需要的config.sh配置文件,并export其中包含的变量。此时,变量在当前shell终端中生效。Makefile中只用变量应为${VAL}https://blog.csdn.net/mouday/article/details/128966176https://blog.csdn.net/QCZTZSWT357/article/details/102577134......
  • bilibili B站:从零开始学Makefile - 原作者笔记
    视频摘自B站:https://www.bilibili.com/video/BV1Bv4y1J7QT笔记摘自:https://gitee.com/yanmu_ym/cpp学习环境搭建Linux(以Ubuntu为例)sudoaptinstallgccg++makeWindows学习与演示过程以Windows为主,Windows上装MinGW环境,MinGW官网:https://www.mingw-w64.org/之前我们提过两个版......