备注:明确说明简明教程,背景就是新建一个工程文件夹且称之为test里面include文件夹放所有头文件,src放所有源文件,CMakeLists.txt直接放在test文件夹下,不引入任何其他库,例如OpenCV的一些动态链接库,就是形式较简单的纯C/C++工程,由于网上关于CMakeList编写的资料繁杂容易让小白迷失方向,本教程的目的正在于尽可能简化起到入门作用,熟悉了一阵子之后建议还是看官方的编写规范,具体自查
下面先贴出一个简单运行main.cpp打印hello的例子,网上也可以找到很多
下面依步骤说明
1.编写cmake版本要求
正如第一行的cmake_minimum_required(VERSION 3.2),可要可不要
2.编写工程名
PROJECT(xxx)这个xxx随便取了,反正后面基本用不到,但这一行必须有
3.包含头文件目录
格式就是INCLUDE_DIRECTORIES(),里面就是路径了,${PROJECT_SOURCE_DIR)意思就是工程目录test,据笔者了解这个工程目录是可以省略的,如果包含工程目录下的include文件夹直接写个include就等同于${PROJECT_SOURCE_DIR)\inlcude了,如果想包含多个文件夹,空格、换行都可以,建议像图中一样在第8行后换行
4.添加可执行源文件
为了方便首先set一下,先命名为SRC然后包含源文件,这里只包含了一个main.cpp,如果你工程还有其他需要用的源文件例如hello.cpp直接在换行添加,然后ADD_EXECUTABLE(xxx &{SRC}),这个xxx就是实际意义的工程名了或者说任务名,就是最后生成的可执行文件名一定是比如这里的hello(例如WINDOWS上为hello.exe),最后cmake,make命令编译好了之后,输入".\hello"(TABz自动补全,因为可能有后缀名,例如WINDOWS上是".\hello.exe")就会运行这个工程任务了,有时候尤其在嵌入式系统编程中不止一个任务,每个任务用到的源文件也不一样(默认所有头文件全放在一个目录里了),这个时候set(SRC1 ...)、set(SRC2 ...)...等,后面再分别ADD_EXECUTABLE(xxx &{SRC1})、ADD_EXECUTABLE(xxx &{SRC2})就可以了,注意这里xxx必须名字不相同,毕竟是不同的任务嘛