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所依据的规则。

      流程图:

      

      抽象层次图:

       

  • 相关阅读:
    奶酪工厂
    P1080 国王游戏(非高精版)
    【洛谷P2150】[NOI2015] 寿司晚宴
    【洛谷P3349】[ZJOI2016]小星星
    【洛谷P5785】[SDOI2012]任务安排
    【模板】严格次短路
    【洛谷P3647】[APIO2014]连珠线
    2021.10.27NOIP模拟总结
    【树形DP】CF1016F Road Projects
    2021CSP-S 总结
  • 原文地址:https://www.cnblogs.com/milanleon/p/13608875.html
Copyright © 2011-2022 走看看