I am developing two CMake projects: libABC
and libXYZ
. libXYZ
requires libABC
, and so I would like install FindABC.cmake
in an appropriate location on Mac and Linux machines.
libABC
and its related files are installed under /usr/local
by default, and I think FindABC.cmake
also should be installed under the same directory. I tried installing it in the following six different locations.
/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
However CMakeList.txt
of libXYZ
cannot find it with the following error.
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.
My cmake
command was installed under /opt/local
by using MacPorts on OS X. So I think it searches not /usr/local
but only /opt/local
.
I know that defining CMAKE_MODULE_PATH
when executing cmake
command solve this issue (e.g., cmake -DCMAKE_MODULE_PATH=/usr/local/lib/cmake/ABC
), but I do not want to ask all users to do it every time.
My questions are
Q1. Where should I install FindABC.cmake
during the libABC
installation process?
Q2. How do I properly find FindABC.cmake
in CMakeLists.txt
of libXYZ
without hard-coding CMAKE_MODULE_PATH
in it?