CMake常用命令——有无target

简介: CMake常用命令——有无target

一、回顾

我们在前几篇博客中已经学会了CMake链库三板斧。那三板斧呢?不妨回顾一下:2目录+1库名

CMake三板斧
1.引入库目录
2.引入头文件目录
3.引入库名

二、链接静态库、动态库

参考爱编程的大丙的博客

2.1 链接静态库:link_directorieslink_libraries

cmake_minimum_required(VERSION 3.0)
project(CALC)
# 搜索指定目录下源文件
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
# 包含头文件路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 包含静态库路径
link_directories(${PROJECT_SOURCE_DIR}/lib)
# 链接静态库
link_libraries(calc)
add_executable(app ${SRC_LIST})

2.2 链接动态库:target_link_directoriestarget_link_libraries

cmake_minimum_required(VERSION 3.0)
project(TEST)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
include_directories(${PROJECT_SOURCE_DIR}/include)
add_executable(app ${SRC_LIST})
target_link_libraries(app pthread 3dparty)

三、这个target有啥作用?

3.2 对比 include_directoriestarget_include_directories

参考[持续学习,不断沉淀的博客]
作用: 添加搜索路径
生效范围:
include_directories:
当前CMakeList.txt中的所有目标以及: 所有在其调用点之后 添加的子目录中的所有目标将具有此头文件搜索路径。
target_include_directories:
指定目标(库、可执行文件) 包含的头文件路径。

3.3 对比 target_link_librarieslink_libraries

书写位置:
link_libraries用在add_executable之前,target_link_libraries用在add_executable之后
链接库类型:
link_libraries用来链接静态库,target_link_libraries用来链接导入库,即按照header file + .lib + .dll方式隐式调用动态库的.lib库
使用形式:
LINK_LIBRARIES (添加需要链接的库文件路径,注意这里是全路径)
TARGET_LINK_LIBRARIES (设置要链接的库文件的名称)

相关文章
|
6月前
|
存储 缓存 编译器
【CMake 命令相关知识】深入理解 CMake命令中的 内置缓存变量
【CMake 命令相关知识】深入理解 CMake命令中的 内置缓存变量
131 0
|
6月前
|
Linux C语言
make:***没有指明目标并且找不到makefile。停止。
make:***没有指明目标并且找不到makefile。停止。
741 0
|
6月前
|
测试技术 编译器 vr&ar
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(一)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
594 1
|
1月前
jetson错误(三):E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法
在NVIDIA Jetson平台上遇到“未能满足的依赖关系”错误时,可以通过运行“sudo apt-get -f install”或“sudo apt-get --fix-broken install”命令来解决。
199 1
|
6月前
|
存储 Linux C++
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(二)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
332 0
|
6月前
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
146 2
|
6月前
|
Unix Linux Shell
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(三)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
1587 1
|
6月前
|
iOS开发 MacOS
CMake基础:CMake中的常用变量的命令
CMake基础:CMake中的常用变量的命令
68 0
|
6月前
解决问题:make: *** No targets specified and no makefile found. Stop.
解决问题:make: *** No targets specified and no makefile found. Stop.
1024 0
|
Linux
Linux tar命令一个有用的参数--strip-component
在解压文件的时候,如果压缩包中的文件存在多级目录。解压出来的时候如果你不想要这些多级目录,你就可以使用–strip-component参数来实现。
662 0