一、回顾
我们在前几篇博客中已经学会了CMake
链库三板斧。那三板斧呢?不妨回顾一下:2目录+1库名
CMake三板斧 |
---|
1.引入库目录 |
2.引入头文件目录 |
3.引入库名 |
二、链接静态库、动态库
2.1 链接静态库:link_directories
和link_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_directories
和target_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_directories
和target_include_directories
参考持续学习,不断沉淀的博客
作用: 添加搜索路径
生效范围:
include_directories:
当前CMakeList.txt
中的所有目标以及: 所有在其调用点之后 添加的子目录中的所有目标将具有此头文件搜索路径。
target_include_directories:
指定目标(库、可执行文件) 包含的头文件路径。
3.3 对比 target_link_libraries
和link_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
(设置要链接的库文件的名称)