zoukankan      html  css  js  c++  java
  • Make和CMake

    1、gcc

      gcc main.c是生成可执行文件(包括编译和链接),可执行文件名默认为a.out,可以加上-o指定生成的可执行文件名:gcc main.c -o ma。

      gcc main.c实际上相当于两条语句:gcc -c main.c(生成目标文件main.o) + gcc main.o(链接生成可执行文件a.out,指定生成的可执行文件名的话为gcc main.o -o name)。

      gcc编译两个文件:gcc func1.c func2.c -o fun

    2、Make

      使用gcc编译多个文件或者一个庞大项目的话使用gcc就很麻烦,这时候可以用make命令工具,使用make需要先生成一个makefile文件,在这个文件中包含要创建的目标文件或可执行文件、创建目标文件所依赖的文件和需要运行的命令、编译顺序等信息,make通过读入和解释Makefile中内容来执行gcc/g++编译工作。使用make的另一个优点就是如果有一个文件修改了,那么它能使该文件和所有受影响的文件进行重新编译,而不受影响的文件就不必重新编译,这样就节省了编译时间。

      大多数的IDE都有make这个命令,比如Linux下GNU的make,Visual C++的nmake。

    3、CMake

      cmake是更高级的跨平台项目管理工具, 它可以根据不同平台、不同的编译器,生成相应的Makefile(在Windows下即为vcproj项目文件)。

      qmake是Qt的项目管理工具,对应的工程文件是*.pro,在Linux下面它也会生成Makefile。

    4、GCC-> Make -> CMake

      写程序大体步骤为:

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

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

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

      但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

      编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各平台对应的makefile或者project文件, 从而帮助程序员减轻负担。虽然不用编写makefile了,但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。

      流程图:

      

      抽象层次图:

       

  • 相关阅读:
    Django 信号
    Python标准库12 数学与随机数 (math包,random包)
    利用python进行数据分析之数据聚合和分组运算
    利用python进行数据分析之绘图和可视化
    Django Aggregation聚合
    配置使用TargetFrameworks输出多版本类库
    WebApi 异常处理解决方案
    WebApi(6) 后台C#调用WebApi
    Target frameworks
    C#中lock死锁实例教程
  • 原文地址:https://www.cnblogs.com/milanleon/p/13608875.html
Copyright © 2011-2022 走看看