Administrator
发布于 2022-04-19 / 7 阅读
0
0

Cmake的初步使用

Cmake的初步使用

以前 接触Ros是有用过cmake,以及 clickhouse 编译源码时也有用过cmake,但是只是执行命令,没怎样看,最近了解了下

cmake 相对于 Makefile 更加便捷,cmake会根据 CMakeLists.txt的内容 会自动生成 Makefile,想着最近捣鼓的项目代码量也上来了,所以试试 cmake,这里记录做下记录

最近想着一个 项目源文件和头文件如何布局,以及一些模块的代码要在那个文件夹,这里现在考虑的不是很完善,现在方案是 .h 和 .cpp 分离开,并且一个功能模块占用一个文件夹

!image-20220419005501875 build 里面就是 cmake 生成的文件,在项目根目录编写 个 CmakeLists.txt ,cmake 会根据这个生成对应的makefile文件

aux\_source\_directory(路径 变量名字) 是指定路径的源文件 保存到指定的变量(这里都是用空格隔开的)

期初一直提示没有找 undefined reference 原因就是 没有导入相对应的文件

  • $是取值的符号
  • set是赋值
  • message相对于 print
  • include\_directories(路径) 是找到相对应的头文件
  • ADD\_EXECUTABLE(生成文件 源文件….)
  • target\_link\_libraries() 链接对应库 相当于 gcc 中的 -L
  • ```hljs

file(GLOB_RECURSE SRC_DIR_LIST "src/.cpp" "src/.c") 这个可以一次性遍历出全部的源文件



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20



#cmake最低版本需求,不加入此行会受到警告信息

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

PROJECT(Server) #项目名称

aux_source_directory(./src/common SRC_common)

aux_source_directory(./src/threadpool SRC_threadpool)

#file(GLOB_RECURSE SRC_DIR_LIST "src/.cpp" "src/.c") #遍历获取source/路径下所有的.cpp和.c文件列表

#打印SRC_DIR_LIST中列表信息

set(SRC_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})

message("SRC_ROOT_PATH ${SRC_ROOT_PATH}")

include_directories(${SRC_ROOT_PATH}/include)

指定可执行文件的输出目录

set( ${PROJECT_SOURCE_DIR}/bin)

ADD_EXECUTABLE(main main.cpp ${SRC_common} ${SRC_threadpool} )

target_link_libraries(main pthread)



* * *

现在看来 cmake 是比较方便,不用写编译的命令,威力很强大,以后遇到什么需求了再来完善,用着学,学着用。

* * *

评论