Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在哪里安装我自己项目的FindXXX.cmake文件,以及如何找到它?_Cmake - Fatal编程技术网

我应该在哪里安装我自己项目的FindXXX.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/

我正在开发两个CMake项目:
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模块。谢谢大家。我在my
CMakeLists.txt中添加了
install(文件“${CMAKE\u CURRENT\u SOURCE\u DIR}/MyProjectConfig.CMAKE”DESTINATION lib/CMAKE/MyProject COMPONENT devel)