2013-03-30 53 views
3

我在写一个小型库。 我想建立它作为共享库,并生成“MyLibraryConfig.cmake”文件,然后可以用我的其他项目来找到我的库。cmake在Windows上导出共享库

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

所以我想产生的东西,如MyLibraryConfig.cmake文件:

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

所以后来MYLIBRARY_LIBRARIES可以搭配我的其他项目的target_link_libraries。

如何获取该可链接文件的名称?我会很好,如果解决方案平台independed是(返回Linux上的.so诡计和.dll.a在Windows上)提前

感谢

回答

2

如果你打算让你的可用库到其他项目没有安装它那么你想CMake命令export。例如:

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

这会在相同的目录中顶级的CMakeLists.txt文件MyLibraryConfig.cmake,并且可以只是在其他的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 d。

+0

谢谢你的回答。它看起来很有趣和有用,但是我寻找解决方案* *安装;) –

+0

典型! :-)我已经添加了关于如何处理安装案例的更多细节。 – Fraser