1.添加共享库
与上文关于静态库的示例一样,add_library() 函数也用于从某些源文件创建共享库。
add_library(hello_library SHARED
src/Hello.cpp
)
这将用于创建一个名为 libhello_library.so 的共享库,并将源传递给 add_library() 函数。
2.别名目标
顾名思义,别名目标是目标的替代名称,可用于代替只读上下文中的真实目标名称。
add_library(hello::library ALIAS hello_library)
3.链接共享库
链接共享库与链接静态库相同。创建可执行文件时,使用 target_link_library() 函数指向您的库。
add_executable(hello_binary
src/main.cpp)
target_link_libraries(hello_binary
PRIVATE
hello::library)
这告诉 CMake 使用别名目标名称将 hello_library 链接到 hello_binary 可执行文件。
4.示例
cmake_minimum_required(VERSION 3.5)
project(hello_library)
############################################################
# Create a library
############################################################
#Generate the shared library from the library sources
add_library(hello_library SHARED
src/Hello.cpp
)
add_library(hello::library ALIAS hello_library)
target_include_directories(hello_library
PUBLIC
${PROJECT_SOURCE_DIR}/include
)
############################################################
# Create an executable
############################################################
# Add an executable with the above sources
add_executable(hello_binary
src/main.cpp
)
# link the new hello_library target with the hello_binary target
target_link_libraries( hello_binary
PRIVATE
hello::library
)
翻译:
cmake-examples/01-basic/D-shared-library at master · ttroy50/cmake-examples · GitHub