cmake在Windows上“导出”共享库

时间:2013-03-30 18:09:00

标签: cmake

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

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

所以我想用以下内容生成MyLibraryConfig.cmake文件:

“set(MYLIBRARY_LIBRARIES /blah/blah/mylibrary.dll.a)”

所以MYLIBRARY_LIBRARIES可以和target_link_libraries一起用于我的其他项目。

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

提前致谢

1 个答案:

答案 0 :(得分:2)

如果您计划将库提供给其他项目而不安装,那么您需要CMake命令export。例如:

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

这会将文件MyLibraryConfig.cmake创建在与顶级CMakeLists.txt相同的目录中,并且在其他CMake项目中可以只是include d。


如果您计划安装您的图书馆,那么您想要使用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进行安装。