[Ubuntu] 无论如何都能学明白的Cmake入门

1 CMakeLists.txt 怎么写

1.1 语句含义

cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。
CMakeLists.txt直接指定了程序的编译规则。
因为仅仅只是作为一个入门学习。我们的目标是

  • 完成软件编译
  • 完成静态库/共享库的建立
  • 使用静态库/共享库

首先我们需要了解CMakeLists.txt中最常用的语句,注意,以下内容对于大小写并没有严格的要求,可以按照个人喜好修改:

  1. 指定cmake的最低版本,通常情况下它并没有那么重要
cmake_minimum_required(VERSION 3.0.2)
  1. 设置项目名称,运行这一句之后就会自动生成两个变量:${PROJECT_NAME}与${PROJECT_SOURCE_DIR},分别指的是项目名称与CMakeLists.txt所在目录
project(YOYO)
  1. 变量设置,前一个参数为变量名,后一个参数为变量指代的路径,例如下面这个例子中就用EXECUTABLE_OUTPUT_PATH变量代表了${PROJECT_BINARY_DIR}/bin路径
set(EXECUTABLE_OUTPUT_PATH ${
   PROJECT_BINARY_DIR}/bin)
  1. 将目录下所有文件给到变量中,值得注意的是这里面的变量可以包含多个路径
aux_source_directory(
    ./src/shared/src SHARED_SRC
)
  1. 设置子目录,下面这个例子中就把当前目录下的src目录指定成了子目录,这个语句会执行指定子目录的CMakeLists.txt,并且子目录的CMakeLists.txt中可以使用父目录CMakeLists.txt中设置的变量
add_subdirectory(./src)
  1. 设定头文件的路径,这样可执行文件就能够#include到这里指定路径下的头文件
include_directories(
   ./include
)
  1. 设置可执行文件,下面的例子中将src目录下的main.cpp设置成了可执行文件,生成的可执行文件名为${PROJECT_NAME}
add_executable( ${
   PROJECT_NAME}
    ./src/main.cpp
)
  1. 设置链接库的路径
link_directories(
	/path/lib
)
  1. 指定要使用的库,在linux中,.a文件是静态库,.so文件是共享库,也称动态库
target_link_libraries(${
   PROJECT_NAME}
    libname.a
    libname.so
)
  1. 将文件打包成链接库,第一个参数是链接库的名称(例如耳熟能详的OpenCV),第二个参数是链接库类型,可以是STATIC(静态库)、SHARED(共享库)、PUBLIC(俺不知道了,公共库吗?),第三个参数是打包成链接库的文件,可以用aux_source_directory命令弄出一大堆文件然后一起输进去
add_library(LIB_NAME SHARED ${
   SHARED_SRC})

1.2 一些实例

当我自己查资料学习的时候看了大量的语句说明,并不能很好地理解,其实在实例中逐步了解效果会好很多,所以这里我们尝试给出一些实例。

1.2.1 创建一个可执行文件

  1. 我们在工作目录下创建一个src文件夹用于存放cpp文件,build文件夹作为二进制目录(就理解成装cmake产生的文件吧),再创建一个CMakeLists.txt
.
├── build
├── CMakeLists.txt
└── src
    └── main.cpp
其中main.cpp文件是一个最简单的hello world程序。CMakeLists.txt内容如下
cmake_minimum_required(VERSION 3.0.2)
project(EXAMPLE)

set(EXECUTABLE_OUTPUT_PATH ${
   PROJECT_BINARY_DIR}/bin)

add_executable(${
   PROJECT_NAME}
    ${
   PROJECT_SOURCE_DIR}/src/main.cpp
)
2 在指定了最小版本、项目名以后,我们先将可执行文件的输出路径指定成${PROJECT_BINARY_DIR}/bin
其中${PROJECT_BINARY_DIR}就是指的build文件夹

然后我们设定src目录下的main.cpp为可执行文件

使用以下命令进行编译
cd ./build
cmake ..
make
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值