在cmake中链接动态库的命令如下:
target_link_libraries(
<PRIVATE|PUBLIC|INTERFACE>
[<PRIVATE|PUBLIC|INTERFACE>
target:指定要加载的库的文件的名字
该文件可能是一个源文件
该文件可能是一个动态库/静态库文件
该文件可能是一个可执行文件
PRIVATE|PUBLIC|INTERFACE:动态库的访问权限,默认为PUBLIC
PUBLIC:在public后面的库会被Link到前面的target中,并且里面的符号也会被导出,提供给第三方使用。
PRIVATE:在private后面的库仅被link到前面的target中,并且终结掉,第三方不能感知你调了啥库
INTERFACE:在interface后面引入的库不会被链接到前面的target中,只会导出符号。
item:链接的库的名字
动态库的链接具有传递性,如果动态库 A 链接了动态库B、C,动态库D链接了动态库A,此时动态库D相当于也链接了动态库B、C,并可以使用动态库B、C中定义的方法。
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_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib2) #动态库文件路径
add_executable(app ${SRC})
target_link_libraries(app calc)