-
Notifications
You must be signed in to change notification settings - Fork 58
Description
When building MBSystem 5.8.3beta12 on Rocky Linux 9 using cmake 3.26.5 the CMAKE_INSTALL_RPATH is being set incorrectly to ${CMAKE_INSTALL_PREFIX}/lib, but the libraries are installed in ${CMAKE_INSTALL_PREFIX}/lib64, so the binaries don't find the mb libraries at runtime.
I was unable to override this by adding -DCMAKE_INSTALL_RPATH to the cmake command line.
Instead I had to modify CMakeLists.txt line 94 and change it to
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib64")
To Reproduce
Attempt to build MBsystem 5.8.3beta12 while setting the CMAKE_INSTALL_PREFIX
In the build directory
cmake .. -DCMAKE_INSTALL_PREFIX=/packages/mb/5.8.3beta12 -DotpsDir=/packages/mb/otps \
-DCMAKE_INSTALL_RPATH=/packages/mb/5.8.3beta12/lib64
Output of the cmake command is
----------------------------------------------------------
CMAKE_SYSTEM_NAME: Linux
CMAKE_C_COMPILER_ID: GNU
CMAKE_SOURCE_DIR: /packages/mb/src/MB-System-5.8.3beta12
CMAKE_MODULE_PATH: /packages/mb/src/MB-System-5.8.3beta12/build-utils
CMAKE_INSTALL_PREFIX: /packages/mb/5.8.3beta12
CMAKE_INSTALL_FULL_LIBDIR: /packages/mb/5.8.3beta12/lib64
CMAKE_INSTALL_FULL_INCLUDEDIR: /packages/mb/5.8.3beta12/include
CMAKE_INSTALL_FULL_BINDIR: /packages/mb/5.8.3beta12/bin
CMAKE_INSTALL_FULL_DOCDIR: /packages/mb/5.8.3beta12/share/doc/MB-System
CMAKE_INSTALL_FULL_DATADIR: /packages/mb/5.8.3beta12/share
CMAKE_INSTALL_FULL_DATAROOTDIR: /packages/mb/5.8.3beta12/share
CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/usr;/packages/mb/5.8.3beta12;/usr/X11R6;/usr/pkg;/opt
CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES: /usr/lib/gcc/x86_64-redhatlinux/11/include;/usr/local/include;/usr/include
CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES: /usr/include/c++/11;/usr/include/c++/11/x86_64-redhat-linux;/usr/include/c++/11/backward;/usr/lib/gcc/x86_64-redhat-linux/11/include;/usr/local/include;/usr/include
BYTESWAPPED:
CMAKE_C_FLAGS: -DBYTESWAPPED -DENABLE_GSF -DTRN_USE_PROJ
CMAKE_CXX_FLAGS: -DBYTESWAPPED -DENABLE_GSF -DTRN_USE_PROJ
CMAKE_INSTALL_RPATH: /packages/mb/5.8.3beta12/lib
OTPSdirectory:/packages/mb/otps
----------------------------------------------------------
-- Configuring done (1.7s)
-- Generating done (2.8s)
-- Build files have been written to: /packages/mb/src/MB-System-5.8.3beta12/build
Expected behavior
I expected CMAKE_INSTALL_RPATH to be set to lib64 instead of lib, or failing that to allow me to override with the -DCMAKE_INSTALL_RPATH=/packages/mb/5.8.3beta12/lib64 cmake parameter.
Additional context
This can be fixed by allowing a command line override - e.g
if (NOT CMAKE_INSTALL_RPATH)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
endif()
or by using CMAKE_INSTALL_FULL_LIBDIR - though this has to be done later in the file as CMAKE_INSTALL_FULL_LIBDIR isn't defined until later
if (NOT CMAKE_INSTALL_RPATH)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
endif()
Thanks
Jeremy