On 2018 M01 3, Wed 10:08:09 CET Franck Houssen wrote: > Hello, > > How to ask cmake to add a library path (coming from pc file) to rpath ? > > I checked this https://cmake.org/Wiki/CMake_RPATH_handling, but still not > working. Can somebody help ? > >> more main.cpp > > #include <petsc.h> > > int main(int argc, char ** argv) { > PetscInitialize(&argc, &argv, NULL, ""); > PetscFinalize(); > return 0; > } > > >> more CMakeLists.txt > > cmake_minimum_required(VERSION 3.7) > enable_language(CXX) > > find_package(MPI REQUIRED) > find_package(PkgConfig REQUIRED) # Get pkg_check_modules. > pkg_check_modules(PETSc REQUIRED PETSc) > > project(main) > add_executable(main main.cpp) > > target_include_directories(main PUBLIC ${MPI_CXX_INCLUDE_PATH}) > target_link_libraries(main PUBLIC ${MPI_CXX_LIBRARIES}) > > target_include_directories(main PUBLIC ${PETSc_INCLUDE_DIRS}) > foreach(lib ${PETSc_LDFLAGS}) > target_link_libraries(main PUBLIC ${lib}) > endforeach(lib)
How does each ${lib} look like ? Is it "-lpetsc" or does it have the full path to the libraries ? You should use the full path to the libraries, otherwise cmake doesn't know where they are and the RPATH computation will not work. > > foreach(dir ${PETSc_LIBRARY_DIRS}) > link_directories(main PUBLIC ${dir}) # Not sure: is this needed ? > endforeach(dir) no, link_directories() in general should not be used. > # use, i.e. don't skip the full RPATH for the build tree > SET(CMAKE_SKIP_BUILD_RPATH FALSE) > # when building, don't use the install RPATH already > # (but later on when installing) > SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) > SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") If the automatic computation fails, you could add the petsc lib dir here as INSTALL_RPATH Alex -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake