/ g++编译 / Cmake make

g++编译

参考博文:https://blog.csdn.net/richerg85/article/details/17073805
参考博文:https://blog.csdn.net/Sunshine_in_Moon/article/details/51044099

1 g++编译流程

gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]
3.由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
还在路上,稍等...

  • g++ -E仅作预处理,不进行编译、汇编和链接,如果你想查看某一个文件的预处理过程,可以在命令行中输入:

    g++ -E main.cxx -o main.i  // 单个源文件
    g++ -E MathFunctions.cc -o MathFunctions..i  // 多个源文件
    
  • g++ -S 编译到汇编语言,不进行汇编和链接,即只激活预处理和编译,生成汇编语言

    g++ -S main.i -o main.s // 单个预处理txt
    g++ -S MathFunctions.i -o MathFunctions.s // 多个预处理txt
    
  • g++ -c 编译、汇编到目标代码,不进行链接,即生成目标文件(.o)

    g++ -c main.s -o main.o
    g++ -c MathFunctions.s -o MathFunctions.o
    
  • g++ -o连接目标代码,生成可执行程序

    g++ main.o -o main.exe //单个源程序,无依赖
    g++ main.o MathFunctions.o -o main.exe //单个源程序main,有依赖MathFunctions
    
  • 也可以一句话将上面4个步骤实现:

    g++ main.cc -o main.exe //直接根据main.cc生成main可执行文件
    g++ main.cc MathFunctions.cc -o main // 直接根据main.cc和依赖项MathFunctions.cc生成main可执行文件
    

cmake/make编译

参考博文:http://www.hahack.com/codes/cmake/

项目中一般存在源文件和CMakeLists.txt。
CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。
对于上面的 CMakeLists.txt 文件,依次出现了几个命令:

cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本;
project:参数值是 Demo1,该命令表示项目的名称是 Demo1 。
add_executable: 将名为 main.cc 的源文件编译成一个名称为 Demo 的可执行文件。

之后,在当前目录执行 cmake . :得到 Makefile。这一步相当于g++中的 -E(得到预处理txt) -S(汇编语言) -c(目标文件)
为了便于交互式的选择变量的值,可以使用 ccmake . 命令。从中可以找到刚刚定义的 USE_MYMATH 选项,按键盘的方向键可以在不同的选项窗口间跳转,按下 enter 键可以修改该选项。修改完成后可以按下 c 选项完成配置,之后再按 g 键确认生成 Makefile 。ccmake 的其他操作可以参考窗口下方给出的指令提示。
/ g++编译 / Cmake make_第1张图片
再使用 make 命令编译得到 Demo 可执行文件。这一步相当于g++中的 -o
/ g++编译 / Cmake make_第2张图片
cmake指定编译器编译
cmake … -G"Visual Studio 14 2015 Win64"

你可能感兴趣的:(Cmake,make)