VisualStudio CMake 动态库:include/link *单个* dll 中所有使用的函数

VisualStudio CMake dynamic library: include/link all used functions in *single* dll

我有一个 VisualStudio-2019 C++ 项目,它使用 CMake 和 Ninja 构建一个 dll,该项目使用来自 protobufspdlog 等几个库的函数,我使用 vcpkg.

构建时,输出被写入四个不同的 dll 文件,main-dll 到 运行 需要所有这些文件。 下面是两个屏幕截图:左边是当前状态,右边是预期状态。

main.dll 文件应该包括它导入的所有函数,编译器不应该为每个库创建单独的 dll。

我不知道旋钮我需要转动,我可以想象几种编辑方式:

我应该从哪里开始?

设置提到的标志或将 -static 附加到导入库组件没有效果,我达到了

set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "-static")
set(CMAKE_MODULE_LINKER_FLAGS "-static")
set(CMAKE_SHARED_LINKER_FLAGS "-static")
set(CMAKE_STATIC_LINKER_FLAGS "-static")

但这一点帮助也没有。

事实证明这是 vcpkg 的问题: 我已经安装了带有三元组 x64-windows 的软件包,它为动态链接而构建,安装软件包 vcpkg install --triplet=x64-windows-static protobuf spdlog 使静态链接成为可能。如果未安装静态变体,构建将静默地进行动态变体。