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(设置要链接的库文件的名称)

相关文章
|
4天前
|
存储 缓存 编译器
【CMake 命令相关知识】深入理解 CMake命令中的 内置缓存变量
【CMake 命令相关知识】深入理解 CMake命令中的 内置缓存变量
69 0
|
4天前
|
Linux C语言
make:***没有指明目标并且找不到makefile。停止。
make:***没有指明目标并且找不到makefile。停止。
110 0
|
4天前
|
测试技术 编译器 vr&ar
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(一)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
97 1
解决办法:dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
解决办法:dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
409 0
|
4天前
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
29 2
|
4天前
|
Unix Linux Shell
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(三)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
68 1
|
9月前
|
数据挖掘 Linux 测试技术
Linux中输入所有命令都提示“command not found”,bashrc环境变量异常的解决方案
Linux中输入所有命令都提示“command not found”,bashrc环境变量异常的解决方案
|
10月前
|
Linux
Linux tar命令一个有用的参数--strip-component
在解压文件的时候,如果压缩包中的文件存在多级目录。解压出来的时候如果你不想要这些多级目录,你就可以使用–strip-component参数来实现。
477 0
|
11月前
|
Linux
linux中--prefix命令是什么意思?
linux中--prefix命令是什么意思?
|
Linux
LINUX doubango编译中prefix参数无效
LINUX doubango编译中prefix参数无效
95 0