我配置和打包使用CMake和CPack我的图书馆。 我已经写我自己的发现模块: FindMyLib.cmake
。
我怎么知道的CMake / CPack将此文件添加到CMake的模块目录,以便今后开发人员只需指定FIND_PACKAGE(MyLib)
使用我的图书馆?
我配置和打包使用CMake和CPack我的图书馆。 我已经写我自己的发现模块: FindMyLib.cmake
。
我怎么知道的CMake / CPack将此文件添加到CMake的模块目录,以便今后开发人员只需指定FIND_PACKAGE(MyLib)
使用我的图书馆?
您可以设置CMAKE_MODULE_PATH
和分发您的自定义FindFoo.cmake
与您的项目。 例如:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
CMake的模块目录的CMake本身的安装树的一部分,因此,你不应该试图在那里添加任何东西。
CMake的模块目录中包含已被写入或Kitware至少审查和模块添加自己也就给人的印象到项目的用户,这是为您的项目也是如此。
你会更好,只是安装FindMyLib.cmake被搜查的地方之一find_package
:
<prefix>/ (Windows) <prefix>/(cmake|CMake)/ (Windows) <prefix>/<name>*/ (Windows) <prefix>/<name>*/(cmake|CMake)/ (Windows) <prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (Unix) <prefix>/(lib/<arch>|lib|share)/<name>*/ (Unix) <prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (Unix) <prefix>/<name>.framework/Resources/ (Apple) <prefix>/<name>.framework/Resources/CMake/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/CMake/ (Apple) <prefix>/<name>.app/Contents/Resources/ (Apple) <prefix>/<name>.app/Contents/Resources/CMake/ (Apple)
请参阅有关文档find_package
如何的全部细节find_package
搜索。 另外, CMake的包装教程是在这种情况下非常有用。
最好的办法,让
未来的开发者可以简单地指定FIND_PACKAGE(MyLib中)用我的图书馆
是写一个程序包配置文件(-config.cmake),而不是查找模块。 然后,将包配置文件应安装在其中FindPackage模块查找(类似/ LIB /包/或/ LIB / cmake的/包第二是优选的)的文件夹中的一个
该FindPackage模块会自动加载配置文件,如果能在那里找到它。
CMake的维基有在更详细的说明https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging