CMake find_package not finding Find<package>.cmake

Anup picture Anup · Oct 21, 2015 · Viewed 16.2k times · Source

I made and installed the aruco library, which put a Findaruco.cmake file in the /usr/local/lib/cmake directory. In my CMakeLists.txt file I have

...
find_package(aruco REQUIRED)

and it always returns the standard error

By not providing "Findaruco.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "aruco", but
CMake did not find one.

Could not find a package configuration file provided by "aruco" with any of
the following names:

    arucoConfig.cmake
    aruco-config.cmake

Add the installation prefix of "aruco" to CMAKE_PREFIX_PATH or set
"aruco_DIR" to a directory containing one of the above files.  If "aruco"
provides a separate development package or SDK, be sure it has been
installed.

I've set the environment variable $CMAKE_PREFIX_PATH to each of the following, and none work

/usr/local  
/usr/local/lib  
/usr/local/lib/cmake  

The only thing that works is setting the following in CMakeLists

set(CMAKE_MODULE_PATH /usr/local/lib/cmake)

I'm not sure what I'm doing wrong

Answer

arrowd picture arrowd · Oct 21, 2015

Try setting CMake variable called CMAKE_PREFIX_PATH, not environment one. Use -D flag during cmake invocation:

cmake -D CMAKE_PREFIX_PATH=/usr/local/lib <path to source or build dir>

But AFAIR, CMake should look into /usr/local prefix as its default behavior.