[CMake] debugging CMAKE_PREFIX_PATH

Patrick Welche prlw1 at cam.ac.uk
Tue Sep 12 19:14:40 EDT 2017


On Tue, Sep 12, 2017 at 11:52:00PM +0100, Patrick Welche wrote:
> Problematic (scribus) CMakeLists.txt:
> 
>   set(CMAKE_PREFIX_PATH "${QT_PREFIX}/lib/cmake")
>   set(CMAKE_INCLUDE_CURRENT_DIR ON)
>   find_package(Qt5Core ${QT_MIN_VERSION} REQUIRED)
> 
> On Tue, Sep 12, 2017 at 04:37:08PM +0300, Konstantin Tokarev wrote:
> > What actually happens here: rogue CMake project overwrites
> > user-supplied CMAKE_PREFIX_PATH with its own value, so it is
> > disregarded.
> >
> > As a workaround (without changing project), you can pass
> > -DQt5Core_DIR=/usr/pkg/qt5/lib/cmake/Qt5Core
> 
> Thank you! I had found the workaround, but the list of Qt packages
> was becoming rather long. Getting rid of the CMAKE_PREFIX_PATH
> over-ride fixed things, but then revealed a further problem:
> 
>   set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
>   set(CAIRO_DIR ${CMAKE_MODULE_PATH})
>   find_package(CAIRO REQUIRED)
> 
>   $ ls -1 CMakeLists.txt cmake/modules/CAIROConfig.cmake
>   CMakeLists.txt
>   cmake/modules/CAIROConfig.cmake

Actually, there is more to this: the build system alters the above to:

set (CMAKE_MODULE_PATH "/usr/obj/pkgsrc/print/scribus5/work.x86_64/.buildlink/cmake-Modules" "${CMAKE_SOURCE_DIR}/cmake/modules")

AFAICT CMAKE_MODULE_PATH should end up as dir1;dir2, but the CMakeCache.txt
says:

CMAKE_MODULE_PATH:PATH=/usr/obj/pkgsrc/print/scribus5/work.x86_64/.buildlink/cmake-Modules

so only one argument to set() made it?

Cheers,

Patrick


More information about the CMake mailing list