3

我正在写一个小图书馆。我想将它构建为共享库并生成“MyLibraryConfig.cmake”文件,然后我的其他项目可以使用该文件来查找我的库。

我唯一的问题是找出用于在 Windows 下链接的文件的名称/路径 - 生成了两个文件:mylibrary.dll 和 mylibrary.dll.a。

所以我想生成 MyLibraryConfig.cmake 文件,如下所示:

“设置(MYLIBRARY_LIBRARIES /blah/blah/mylibrary.dll.a)”

因此 MYLIBRARY_LIBRARIES 可以与 target_link_libraries 一起用于我的其他项目。

如何获取此可链接文件的名称?如果解决方案独立于平台,我会很好(在 Linux 上返回 .so wile,在 Windows 上返回 .dll.a)

提前致谢

4

1 回答 1

2

如果您打算在不安装它的情况下将您的库提供给您的其他项目,那么您需要 CMake 命令export。例如:

export(TARGETS MyLib FILE ${CMAKE_SOURCE_DIR}/MyLibraryConfig.cmake)

这会在与顶级 CMakeLists.txt 相同的目录中创建文件 MyLibraryConfig.cmake,并且只能include在其他 CMake 项目中使用。


如果您打算安装库,那么您想install(EXPORT ...)改用:

install(TARGETS MyLib EXPORT MyLibraryConfig
            RUNTIME DESTINATION bin
            LIBRARY DESTINATION lib
            ARCHIVE DESTINATION lib/static)
install(EXPORT MyLibraryConfig DESTINATION cmake)

这会将文件 MyLibraryConfig.cmake 安装到<install path>/cmake,然后可以include由其他项目 d。

于 2013-03-30T18:28:43.350 回答