How can LD_LIBRARY_PATH be changed within CMake?

If your shared lib is not build in the same CMake project of your executable, you can use the CMake rpath handling like this:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

When you will run make install, CMake will automatically set the runtime path of your executable to your shared library.

If your shared library is built in the same CMake project, use this:

set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

In this case you must add yourself the directory where your shared library will be installed to the runtime path.

For more information, you can read CMake rpath handling


When you use this solution:

SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

Remembter to set the RPATH before defining the targets in your CMake-File. So this instruction have to be before add_executable() or add_library() is called, otherwise it has no effect.


You can set the runtime shared library search path using the -rpath linker option:

SET(CMAKE_EXE_LINKER_FLAGS 
          "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")