The cmake rpath settings handle build/install directories more or less automatically, but you need to add a completely different path.
Try adding the additional path (pretty much every -L you added) to CMAKE_INSTALL_RPATH, and set CMAKE_BUILD_WITH_INSTALL_RPATH=TRUE. Then run cmake with the ‘-v’ option and look at the link command to verify rpath was passed correctly. You can also examine it in a library or executable with ‘objdump-x’. You may want to customize this for your project, but this should get you started. hth... don On Thu, Jan 4, 2018 at 1:25 AM Franck Houssen <franck.hous...@inria.fr> wrote: > My understanding is that you need a local copy of FindPETSc.cmake: if this > changes, you don't know it. > That's why I tried to go with the pc file. > > ----- Mail original ----- > > De: "Andreas Naumann" <andreas-naum...@gmx.net> > > À: cmake@cmake.org > > Envoyé: Mercredi 3 Janvier 2018 21:41:51 > > Objet: Re: [CMake] RPATH for pkg-config > > > > What about using a FindPETSC-Module? Some hints are > > *http://jacobmerson.com/2016/01/17/cmake-petsc2.html > > *http://www.mcs.anl.gov/petsc/documentation/faq.html#cmake > > > > Regards, > > Andreas > > > > Am 03.01.2018 um 21:35 schrieb Alexander Neundorf: > > > 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 > > > -- > > 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 >
-- 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