CMake 静态库和动态库混合使用
将原来的 静态库 MathFunctions拆分为动态库 MathFunctions.dll 和静态库 SqrtLibrary.lib 两个库。MathFunctions.dll 动态库会使用 SqrtLibrary.lib 静态库。 BUILD_SHARED_LIBS 在顶层的 CMakeLists.txt 文件中添加 BUILD_SHARED_LIBS,如果这个标记存在且为真,则将导致所有库都被构建为共享库,除非该库被显式地设置为静态库。这个变量通常作为 option() 添加到项目中,以便项目的每个用户可以决定他们是要使用共享库还是静态库构建项目。 顶层的 CMakeLists.txt 文件修改如下: # 设置CMake版本最低要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称和版本 project(Tutorial VERSION 3.2)# 指定 C++ 标准 set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED True)# control where the static and shared libraries are built so that on windows # we don't need to tinker with the path to run the executable # 指定静态库和动态库的生成路径 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")# 生成共享库选项 option(BUILD_SHARED_LIBS "Build using shared libraries" ON)# 生成一个头文件,传递 CMake 的一些设置到源代码 configure_file(TutorialConfig....