CMake常用命令——有无target

5 篇文章 1 订阅

一、回顾

我们在前几篇博客中已经学会了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 (设置要链接的库文件的名称)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿天堂没有C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值