Web lists-archives.com

Re: kdesrc-build: cmake should take local (instead of system-wide) cmake modules






Am 09.05.2018 08:19 schrieb Ben Cooksley:
On Wed, May 9, 2018 at 9:28 AM, gregor.mi.sw <codestruct@xxxxxxxxxx> wrote:


On 08.05.2018 23:15, Milian Wolff wrote:

On Dienstag, 8. Mai 2018 22:40:39 CEST gregor.mi.sw wrote:

Hello,

I have a question regarding kdesrc-build and CMake.

I setup the build environment variables and ran kdesrc-build and got a
compiler error kinfocenter.

I investigated
/home/gregor/kde/src/build/kde/workspace/kinfocenter/CMakeCache.txt and
found the following lines

      //The directory containing a CMake configuration file for
KF5Service.
      KF5Service_DIR:PATH=/usr/lib64/cmake/KF5Service

//The directory containing a CMake configuration file for KF5Solid.
      KF5Solid_DIR:PATH=/usr/lib64/cmake/KF5Solid

      //The directory containing a CMake configuration file for
KF5Wayland.
      KF5Wayland_DIR:PATH=/usr/lib64/cmake/KF5Wayland

The directories of the needed KF5 frameworks point to the system wide
installed ones.

I removed the system-wide devel package for solid (because it caused the
compiler error) and ran kdesrc-build again:

      //The directory containing a CMake configuration file for
KF5Service.
      KF5Service_DIR:PATH=/usr/lib64/cmake/KF5Service

//The directory containing a CMake configuration file for KF5Solid.
      KF5Solid_DIR:PATH=/home/gregor/kde/usr/lib64/cmake/KF5Solid

      //The directory containing a CMake configuration file for
KF5Wayland.
      KF5Wayland_DIR:PATH=/usr/lib64/cmake/KF5Wayland

Now it shows the correct (local) path for solid (but not the other ones).
Is
there an environment variable or something I have to set to tell Cmake to
always look for local modules first?


Try CMAKE_PREFIX_PATH. See e.g. this old blog post on the matter:

https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it


Thanks for the hint. The variable was already set:

CMAKE_PREFIX_PATH=/home/gregor/kde/usr:

In the blog post, it is said, that CMAKE_PREFIX_PATH is searched _first_. I find it strange that I had to uninstall the system-wide devel package in order to have cmake pick up the library in /home/gregor/kde/usr. And for the
other libraries it still uses /usr. Any idea how to investigate this
further?

If you have previously run CMake without setting CMAKE_PREFIX_PATH you
will need to remove your build directory first, otherwise it will
reuse modules it has already found.

Hello Ben, I already removed the build dir (forgot to mention that). I assume that it should be sufficient to delete the build dir of the application that should be configured (/home/gregor/kde/src/build/kde/workspace/kinfocenter/) and not also those of the imported libraries (KF5Service, KF5Solid, KF5Wayland etc.). I wonder if there is maybe an additional (global) cmake cache or a special behaviour of kdesrc-build.

Gregor