CMake实战(二)

简介: 上一篇《CMake实战(一)》我们是把所有文件放在同一个目录下,而平常开发时,我们会将源文件进行分类,放到不同的目录下。接下来我们来看一下具体要怎么操作。

前言

上一篇《CMake实战(一)》我们是把所有文件放在同一个目录下,而平常开发时,我们会将源文件进行分类,放到不同的目录下。接下来我们来看一下具体要怎么操作。

使用实例

(1)文件内容同上一篇,目录结构如下:

./test2|+---main.c|+---hello/|+---hello.c|+---hello.h

20210207153850832.png

(2) hello目录下创建CMakeLists.txt, 内容如下:

aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库add_library (hello${DIR_LIB_SRCS})

(3) 根目录下创建CMakeLists.txt, 内容如下:

#cmake最低版本需求,不加入此行会受到警告信息CMAKE_MINIMUM_REQUIRED(VERSION2.6)
PROJECT(HELLO) #项目名称#把当前目录(.)下所有源代码文件加入变量SRC_LISTAUX_SOURCE_DIRECTORY(. SRC_LIST)
# 添加 hello子目录ADD_SUBDIRECTORY(hello)
# 设置头文件查找目录INCLUDE_DIRECTORIES(./hello)
#生成应用程序 mainADD_EXECUTABLE(main${SRC_LIST})
# 添加链接库, hello即子目录编译的库TARGET_LINK_LIBRARIES(mainhello)

(3) 创建build目录

mkdirbuild

目录结构如下:

2021020715410185.png

(4) 使用cmake构建项目

cdbuildcmake ..     // ..表示上一个目录

2021020715413426.png

(5) 编译生成可执行文件

make

20210207154215695.png

so easy!


总结

上面是将子目录编译成库,然后进行链接!这只是一种方式,我们也可以直接在根目录的CMakeLists.txt中指定子目录的源文件!大家可以根据个人喜好来决定!


官方文档:

https://cmake.org/cmake/help/v3.19/manual/cmake-commands.7.html


相关文章
|
3月前
|
Dart IDE Unix
CMake 教程3
CMake 教程
35 1
|
5月前
|
C++ 缓存 存储
面向 C++ 的现代 CMake 教程(一)(3)
面向 C++ 的现代 CMake 教程(一)
124 0
|
5月前
|
C++ 开发者 缓存
面向 C++ 的现代 CMake 教程(四)(1)
面向 C++ 的现代 CMake 教程(四)
61 0
|
5月前
|
C++ 存储 JSON
面向 C++ 的现代 CMake 教程(五)(4)
面向 C++ 的现代 CMake 教程(五)
61 0
|
5月前
|
C++ 存储 索引
面向 C++ 的现代 CMake 教程(一)(5)
面向 C++ 的现代 CMake 教程(一)
94 0
|
5月前
|
C++ 开发者 开发工具
面向 C++ 的现代 CMake 教程(四)(2)
面向 C++ 的现代 CMake 教程(四)
66 0
|
5月前
|
缓存 存储 C++
面向 C++ 的现代 CMake 教程(一)(4)
面向 C++ 的现代 CMake 教程(一)
71 0
|
5月前
|
C++ 缓存 Unix
面向 C++ 的现代 CMake 教程(四)(4)
面向 C++ 的现代 CMake 教程(四)
49 0
|
5月前
|
存储 算法 C++
面向 C++ 的现代 CMake 教程(五)(5)
面向 C++ 的现代 CMake 教程(五)
47 0
|
5月前
|
C++ 容器 Docker
面向 C++ 的现代 CMake 教程(一)(1)
面向 C++ 的现代 CMake 教程(一)
130 0