> 文章列表 > CMake常用命令之有无target

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