我应该在哪里安装我自己项目的FindXXX.cmake文件,以及如何找到它?
我正在开发两个CMake项目:我应该在哪里安装我自己项目的FindXXX.cmake文件,以及如何找到它?,cmake,Cmake,我正在开发两个CMake项目:libABC和libXYZlibXYZ需要libABC,因此我想在Mac和Linux机器上的适当位置安装FindABC.cmake libABC及其相关文件默认安装在/usr/local下,我认为FindABC.cmake也应该安装在同一目录下。我尝试在以下六个不同的位置安装它 /usr/local/lib/cmake/ABC/FindABC.cmake /usr/local/share/cmake/ABC/FindABC.cmake /usr/local/lib/
libABC
和libXYZ
libXYZ
需要libABC
,因此我想在Mac和Linux机器上的适当位置安装FindABC.cmake
libABC
及其相关文件默认安装在/usr/local
下,我认为FindABC.cmake
也应该安装在同一目录下。我尝试在以下六个不同的位置安装它
/usr/local/lib/cmake/ABC/FindABC.cmake
/usr/local/share/cmake/ABC/FindABC.cmake
/usr/local/lib/ABC/FindABC.cmake
/usr/local/share/ABC/FindABC.cmake
/usr/local/lib/ABC/cmake/FindABC.cmake
/usr/local/share/ABC/cmake/FindABC.cmake
但是,
libXYZ
的CMakeList.txt
找不到它,出现以下错误
CMake Error at CMakeLists.txt:51 (find_package):
By not providing "FindABC.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"ABC", but CMake did not find one.
我的cmake
命令是使用OS X上的MacPorts安装在/opt/local
下的。因此我认为它不会搜索/usr/local
,而只搜索/opt/local
我知道在执行CMAKE
命令时定义CMAKE\u模块路径可以解决这个问题(例如,CMAKE-DCMAKE\u模块路径=/usr/local/lib/CMAKE/ABC
),但我不想每次都要求所有用户这样做
我的问题是
问题1。在libABC
安装过程中,我应该在哪里安装FindABC.cmake
问题2。如何在libXYZ
的CMakeLists.txt
中正确查找FindABC.cmake
,而无需在其中硬编码cmake\u模块路径
。FindXXX.cmake
文件由cmake本身或使用find\u package(XXX)
调用的项目提供。如果您的ABC项目想要被搜索,它应该安装ABCConfig.cmake文件。请参阅关于创建此类*Config.cmake
文件的说明。@ruso:答案在这里没有帮助,因为它没有说明在何处安装模块(findxxx.cmake)文件。可能与@ruslo:是的,每个项目都会提供一个配置文件的cmake文件重复。但实际上,有很多第三方FindXXX.cmake模块。谢谢大家。我在我的CMakeLists.txt
FindXXX.CMAKE
中添加了install(文件“${CMAKE\u CURRENT\u SOURCE\u DIR}/MyProjectConfig.CMAKE”DESTINATION lib/CMAKE/myprojectcomponent-devel)
,文件由CMAKE本身或使用find\u-package(XXX)
调用的项目提供。如果您的ABC项目想要被搜索,它应该安装ABCConfig.cmake文件。请参阅关于创建此类*Config.cmake
文件的说明。@ruso:答案在这里没有帮助,因为它没有说明在何处安装模块(findxxx.cmake)文件。可能与@ruslo:是的,每个项目都会提供一个配置文件的cmake文件重复。但实际上,有很多第三方FindXXX.cmake模块。谢谢大家。我在myCMakeLists.txt中添加了install(文件“${CMAKE\u CURRENT\u SOURCE\u DIR}/MyProjectConfig.CMAKE”DESTINATION lib/CMAKE/MyProject COMPONENT devel)