我正在写一个小型图书馆。 我想将它构建为共享库并生成“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)
提前致谢
答案 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
进行安装。