在cmake中,链接静态库的命令如下:
link_libraries(
如果该静态库不是系统提供的(自己制作或者使用第三方提供的静态库)可能出现静态库找不到的情况,此时可以将静态库的路径也指定出来:
link_directories(
将静态库放入lib1文件中,动态库放入lib2文件中,删除src,通过main.cpp进行测试
cmake_minimum_required(VERSION 3.10.2)
project(test)
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) #PROJECT_SOURCE_DIR就是CMakefileLists.txt所在路径
file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) #CMAKE_CURRENT_SOURCE_DIR就是CMakefileLists.txt所对应的路径
include_directories(${PROJECT_SOURCE_DIR}/include)
set(CMAKE_CXX_STANDARD 11)
link_libraries(calc) #静态库名
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib1) #静态库文件路径
add_executable(app ${SRC})

生成可执行程序的时候首先把对应的源文件指定出来(通过file进行搜索),然后通过link_libraries将库文件追加到app中去
add_executable除了加载SRC的文件,还会加载库文件,然后把源文件和库文件链接,最后生成可执行程序app
如果使用静态库,在生成app时静态库和原文件都会打包到对应的可执行程序里去,动态库不会,要等应用程序调用动态库数据,动态库才会被加载到内存中
静态链接就是每个程序都包含一份库,动态链接就是所有用到该库的程序共享一份库文件