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

相关文章
|
Java Shell Linux
Android——编译(一):编译make的基础知识
Android——编译(一):编译make的基础知识
467 0
|
Unix
深入理解 CMake 的 `cmake --build` 命令
深入理解 CMake 的 `cmake --build` 命令
2236 1
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
466 10
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
353 20
|
负载均衡 安全 前端开发
深入理解微服务架构中的API网关
【7月更文挑战第4天】本文旨在探讨微服务架构中的关键组件——API网关,分析其作用、设计原则及实现方式。通过对比不同场景下的应用实例,揭示API网关在微服务生态系统中的重要性和实现细节。
239 2
|
缓存 应用服务中间件 nginx
dockerfile构建镜像详细解释与应用
Dockerfile 是一种可被 Docker 程序解释的脚本,用于定义如何构建容器镜像。它通过一系列指令指定镜像的配置和定制需求,支持自动化构建,简化开发、测试和部署流程。
416 0
|
Ubuntu Linux Python
update-alternatives --config python 为什么不能使用
【6月更文挑战第14天】update-alternatives --config python 为什么不能使用
415 1
|
网络协议
Wireshark中的http协议包分析
Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。 下图是访问百度页面的头部文件的Wireshark数据包截取图,以下几点说明如下:
Wireshark中的http协议包分析
|
C++ Python
Python实现卡方检验和相关性分析
Python实现卡方检验和相关性分析
1305 0
Python实现卡方检验和相关性分析
|
SQL 开发框架 Java
Docker安装达梦数据库以及使用
Docker安装达梦数据库以及使用
2794 0