在项目结构复杂的情况下,通过gcc/g++命令进行直接编译会带来很大的不便,因此使用Makefile构建工具。
通用构造工具
(Makefile)、CMake(CMakelists)
Mark
make工具是从Makefile文件中“读”并执行编译指令。
Mark是如何工作的
一、make在当前目录下查找名为“Makefile”或“makefile”的文件。
二、如果找到了,它将在文件中以target目标文件的形式查找第一个目标文件。
三,根据target目标文件的prerequisites,执行相应的target生成目标文件,并最终生成它。
四、如果target目标文件存在,则根据所依赖的后面的.o文件是否比target目标文件修改时新,来判断是否需要重新生成target目标文件。
Makefile介绍
makefile是一个文件,其中包含一堆有组织的gcc/g++编译命令。
Makefile语法格式
target: prerequisites
command 12复制代码类型:[cpp]
target也就是目标文件,它可以是ObjectFile或执行文件,也可以是标签(标签)
prerequisites是生成该目标所需的文件或目标文件。
而command就是make需要执行的外壳命令。
生成文件的示例
main.out:main.o sub.o add.o
gcc -lstdc++ main.o sub.o add.o -o main
sub.o:sub.cpp
gcc -c sub.cpp -o sub.o
add.o:add.cpp
gcc -c add.cpp -o add.o
main.o:main.cpp
gcc -lstdc++ -c main.cpp -o main.o1234567891011复制代码类型:[html]
使用命令
例如,执行make命令会生成执行程序。
CMake
作为一个跨平台的编译工具,CMake比make更加先进,并且使用起来更加方便。cMake主要是编写CMakeLists.txt文件,然后使用Cmake命令将CMakeLists.txt文件转换成Makefile文件,最后使用make命令对源代码进行编译,生成可执行程序或共享库。
CMakelists介绍
当项目规模很大的时候,用手写Makefile会变得很复杂,你需要在不同的目录下写不同的Makefile,可能有很多。这时,CMakelists就可以使用更简单的写法生成相应的Makefile文件。
二、软件要跨平台,必须保证能够在不同的平台进行编译。而且,如果使用上述Make工具,您必须为每种平台编写一次Makefile;CMake可以通过CMakeLists.txt文件生成特定平台的标准Makefile文件。
CMakelists示例
# 指定cmake最低版本
cmake_minimum_required(VERSION 3.15)
# 设置项目名称
project(HELLO)
# 设置变量
set(CMAKE_CXX_STANDARD 14)
# 创建可执行程序工程(
add_executable(HELLO main.cpp add.cpp sub.cpp sub.h)