SFML/CSFML

Install prefix not honored

mgrojo opened this issue · 4 comments

mgrojo commented

Prerequisite Checklist

Describe your issue here

I tried to install as a regular user, but a system path was tried to be written.

Your Environment

  • OS / distro / window manager: Ubuntu 22.04.4 LTS / Xwayland
  • CSFML version: b71e8c1
  • Compiler / toolchain: GCC
  • Special compiler / CMake flags:

Steps to reproduce

cmake --install . --prefix $HOME/local

Expected behavior

Everything is installed under $HOME/local with regular user permissions.

Actual behavior

-- Install configuration: "Release"
-- Installing: /home/mgr/local/lib/libcsfml-system.so.3.0.0
-- Installing: /home/mgr/local/lib/libcsfml-system.so.3.0
-- Installing: /home/mgr/local/lib/libcsfml-system.so
-- Installing: /home/mgr/local/lib/libcsfml-window.so.3.0.0
-- Installing: /home/mgr/local/lib/libcsfml-window.so.3.0
-- Installing: /home/mgr/local/lib/libcsfml-window.so
-- Installing: /home/mgr/local/lib/libcsfml-network.so.3.0.0
-- Installing: /home/mgr/local/lib/libcsfml-network.so.3.0
-- Installing: /home/mgr/local/lib/libcsfml-network.so
-- Installing: /home/mgr/local/lib/libcsfml-graphics.so.3.0.0
-- Installing: /home/mgr/local/lib/libcsfml-graphics.so.3.0
-- Installing: /home/mgr/local/lib/libcsfml-graphics.so
-- Installing: /home/mgr/local/lib/libcsfml-audio.so.3.0.0
-- Installing: /home/mgr/local/lib/libcsfml-audio.so.3.0
-- Installing: /home/mgr/local/lib/libcsfml-audio.so
CMake Error at cmake_install.cmake:59 (file):
  file cannot create directory: /usr/local//pkgconfig.  Maybe need
  administrative privileges.

Please share your CMake configuration command. It appears you're trying to do something with pkgconfig as opposed to a normal CMake installation.

mgrojo commented

I simply did:

cmake .
make
cmake --install . --prefix $HOME/local

I tried also with make install but don't know how to specify the prefix. I found the last command in https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html

texus commented

When you run cmake the first time, CSFML_PKGCONFIG_INSTALL_PREFIX gets initialized based on CMAKE_INSTALL_PREFIX. When running cmake the second time, it ignores the new $HOME/local prefix because the install directory for pkgfile depends on CSFML_PKGCONFIG_INSTALL_PREFIX, which was initialized with the wrong prefix on the first run.

I've seen this problem in the past as well, even in SFML itself. If you delete the build folder and specify the prefix on the first cmake run then it does get installed to the correct location (when running the install command later). Alternatively you can specify a value for CSFML_PKGCONFIG_INSTALL_PREFIX explicitly.

mgrojo commented

Fixed via #234.