1.概念
在linux中不像windows和mac有图形界面,怎么快速的用命令行运行大型项目成为一个问题,并且像c/c++需要自己添加include文件的位置 ,当文件数目变多的时候,怎么运行项目就成一个一个问题。
Makefile就是为了解决这个问题,我们可以把各种依赖和shell语句放在makefile文件中,然后make执行这个文件就可以将程序按照makefile的流程跑起来了。
- 支持中大型项目的运行
- 支持只编译修改过的代码部分,节省大量时间
2. Makefile的格式
targets : prerequisites command
- targets:规则的目标,可以是 Object File(一般称它为中间文件),也可以是可执行文件,还可以是一个标签;
- prerequisites:是我们的依赖文件,要生成 targets 需要的文件或者是目标。可以是多个,也可以是没有;
- command:make 需要执行的命令(任意的 shell 命令)。可以有多条命令,每一条命令占一行。
test:test.c gcc -o test test.c
3.CMakelists文件的编写
在c++中我们知道,不管vscode配置还是命令行都需要比较复杂的操作,但是如果掌握了CMakelists,我们运行c++程序就比较简单了,只需要把所有的配置全写在这个文件里,然后cmake . + make就好了。
# CMAKE_SOURCE_DIR为CMakelists.txt文件的当前目录
project(any_project_name)
# 源文件 可以写多个file,来连接多个文件,这里就找到需要执行的cpp文件
file(GLOB SOURCE_1 "${CMAKE_SOURCE_DIR}/benchmark/*.cpp")
# 可执行文件放的地方
SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/")
# 头文件
include_directories("${CMAKE_SOURCE_DIR}/include/")
add_executable(any_project_name ${SOURCE_1})
|