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

Reply via email to