我使用CMake和CPack配置和打包我的库。我已经编写了自己的查找模块:FindMyLib.cmake
。
如何告诉CMake/CPack将此文件添加到CMake模块目录中,以便将来的开发人员可以简单地指定FIND_PACKAGE(MyLib)
来使用我的库?
发布于 2012-05-26 12:18:22
您可以设置CMAKE_MODULE_PATH
并将您的自定义FindFoo.cmake
与项目一起分发。例如:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
发布于 2012-05-26 12:58:52
CMake模块目录是CMake本身安装树的一部分,因此您不应该尝试在其中添加任何内容。
CMake模块目录包含已经编写或至少由Kitware审查过的模块,在那里添加您自己的模块会给项目的用户留下这样的印象:您的项目也是如此。
你最好在find_package
搜索到的某个地方安装FindMyLib.cmake
/ (Windows) /(cmake|CMake)/ (Windows) /*/ (Windows) /*/(cmake|CMake)/ (Windows) /(lib/|lib|share)/cmake/*/(Unix) /(lib/|lib|share)/*/ (Unix) /(lib/|lib|share)/*/(cmake|CMake)/ (Unix) /.framework/Resources/ (Apple) /.framework/Resources/CMake/ (Apple) /.framework/Versions/*/Resources/ (Apple) /.framework/Versions/*/Resources/CMake/(Apple) /.app/Contents/Resources/ (Apple) /.app/Contents/Resources/CMake/ (Apple)
有关find_package
搜索方式的完整详细信息,请参阅documentation for find_package
。在这种情况下,CMake packaging tutorial也很有用。
发布于 2016-01-17 12:57:32
最好的方法是允许
未来的开发人员可以简单地指定FIND_PACKAGE(MyLib)来使用我的库
是写一个包配置文件(-config.cmake),而不是一个查找模块。然后,应该将包配置文件安装在FindPackage模块查找的某个文件夹中(类似于/lib/ package /或/lib/cmake/package,第二个是首选的)
如果可以在那里找到配置文件,FindPackage模块将自动加载该文件。
https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging上的CMake维基有更详细的说明
https://stackoverflow.com/questions/10765885
复制