CMake 应用程序和 DLL 都链接到同一个静态库



我正在尝试使用CMake进行一些简单的事情,但我遇到了问题。

我有一个应用程序需要链接到本身链接到静态库的 DLL。这些模块中的每一个都驻留在其自己的文件夹中,并带有自己的 CMakeLists.txt 文件。

我使用 add_subdirectory((

构建项目层次结构,以便 DLL add_subdirectory(( 添加静态库(以及指向静态的链接(,应用程序使用 add_subdirectory(( 添加到 DLL 项目中。

现在,问题是在最终项目中,CMake 使应用程序链接到 DLL 和静态库,尽管我在 CMakeLists.txt 文件中明确要求它仅链接到 DLL。显然,如果 DLL 已经链接到静态,我不希望应用程序链接到静态。

我怀疑它与add_subdirectory((有关,但我看不到如何解决这个问题。有人可以指出我做错了什么吗?

默认情况下,"library1"与"library2"的链接将传播给"library1"的所有用户(例如,应用程序(。每当"library2"是共享STATIC时,就会完成此操作。

对于压制链接传播,请使用专用链接:

target_link_libraries(library1 PRIVATE library2)

最新更新