Cmake笔记总结

  1. 单个源文件
  2. 同一目录,多个源文件
  3. 多个目录,多个源文件
  4. 几个重要的指令(find_package(),include_directories(),link_directories(),target_link_libraries(),target_include_directories())

1 单个源文件
CMakeLists.txt 文件:在这里插入图片描述
2 同一目录,多个源文件
工程目录:
在这里插入图片描述
CMakeLists.txt 文件:
在这里插入图片描述
或使用 aux_source_directory 命令,该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名。
在这里插入图片描述
可以修改 CMakeLists.txt 如下:
在这里插入图片描述

3 多个目录,多个源文件
工程目录:
在这里插入图片描述

根目录中的 CMakeLists.txt :
在这里插入图片描述

子目录math中的 CMakeLists.txt:
在这里插入图片描述

4.几个重要的指令()
set()
举例1,set(libs “¥{CMAKE_SOURCE_DIR}/src/main/jnilibs”)
这个命令完成了这么一件事情:
定义了一个变量libs,并且变量的值为${CMAKE_SOURCE_DIR}/src/main/jnilibs,其中CMAKE_SOURCE_DIR 是一个cmake内置变量,指定了CMakeLists.txt所在的目录

1 find_package()
如下find_package(A),需要在环境变量的索引中找到FindA.cmake文件
CMakeLists.txt :
在这里插入图片描述
FindA.cmake
在这里插入图片描述

如下是导入外部文件+链接库

1.1 include_directories()
include_directories()的影响范围最大,可为CMakelists.txt后的所有项目添加头文件目录
一般写在最外层CMakelists.txt中影响全局

1.2.link_directories(): 添加需要链接的库文件目录
如link_directories(D:/camera_driver/SDK/lib)

1.3 target_link_libraries():将目标文件与库文件进行链接
target_link_libraries(project_name Astra.lib astra_core.lib astra_core_api.lib )
project_name为project的名称,Astra.lib / astra_core.lib / astra_core_api.lib 三个库文件来自2中link_directories(D:/camera_driver/SDK/lib)

2 target_include_directories()
target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。
一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的lib。
在这里插入图片描述
3 add_executable()
add_executable( )中添加的引用路径一般是当前目录下的源文件对应的头文件。是生成项目时引入的头文件。 这种方式一般用于自己写的或某项目需要的头文件,这种方式需要加添加文件名字,而非头文件目录

在这里插入图片描述
附:参考3篇资料,已忘记链接

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值