Search code examples
buildcmakeinstallationgnu-makeawesome-wm

Cmake doesn't respect value of CMAKE_INSTALL_PREFIX


I'm trying to install awesome wm from source. So I created a build directory and executed the following command:

cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX

But make install tries to put some of the program files in /usr/local/share, which isn't where I want them:

> make install
[  3%] Built target generated_sources
[  6%] Built target test-gravity
[  9%] Built target lgi-check
[  9%] Built target version_stamp
[ 29%] Built target generated_icons
[ 31%] Checking for LGI...
Building for Lua 5.3.
Found lgi 0.9.2.
[ 31%] Built target lgi-check-run
[ 35%] Built target generate_awesomerc
[100%] Built target awesome
Install the project...
-- Install configuration: ""
-- Up-to-date: /home/user/.local/bin/awesome
-- Up-to-date: /home/user/.local/bin/awesome-client
-- Installing: /usr/local/share/awesome/lib
CMake Error at cmake_install.cmake:69 (file):
  file INSTALL cannot make directory "/usr/local/share/awesome/lib": No such
  file or directory


make: *** [Makefile:107: install] Error 1

Is there some cmake variable similar to CMAKE_INSTALL_PREFIX or CMAKE_INSTALL_LIBDIR which I need to specify for share data?


Solution

  • You'll have CMAKE_INSTALL_DATADIR for share when using the cmake module: include(GNUInstallDirs)

    Note: when using cmake --build build --target install -- DESTDIR=foo please read the CMAKE_INSTALL_PREFIX doc

    On UNIX one can use the DESTDIR mechanism in order to relocate the whole installation. DESTDIR means DESTination DIRectory.

    WARNING: DESTDIR may not be used on Windows because installation prefix usually contains a drive letter like in C:/Program Files which cannot be prepended with some other prefix.

    src: https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html#variable:CMAKE_INSTALL_PREFIX