I am trying to build pion using a CMake style build system. The only problem is the grid simulation modules(pion-ng
,pion-ug
,icgen-ng
,icgen-ug
) are unable to link to the SUNDIALS(VER 7.1.1) functions although CMake(VER 3.2.2.1) correctly does find my SUNDIALS installation but doesn’t link to it.
In the CMakeLists.txt file at /pion/ I use find_package(SUNDIALS REQUIRED)
and set the -DCMAKE_PREFIX_PATH to /sundials/install/
and add the flag -DCMAKE_CXX_FLAGS="-I/mnt/e/sundials/install/include"
(without explicitly adding this flag, CMake does not detect the header files).
My CMakeLists.txt file at /pion/source
attempts to link like this:
# pion-ng internal dependencies
target_link_libraries(pion-ng PRIVATE
nested_sim_control
nested_grid
SUNDIALS::cvode_shared
SUNDIALS::nvecserial_shared
SUNDIALS::sunmatrixdense_shared
SUNDIALS::sunlinsoldense_shared
SUNDIALS::sunnonlinsolnewton_shared
)
# icgen-ng internal dependencies
target_link_libraries(icgen-ng PRIVATE
ics
nested_grid
SUNDIALS::cvode_shared
SUNDIALS::nvecserial_shared
SUNDIALS::sunmatrixdense_shared
SUNDIALS::sunlinsoldense_shared
SUNDIALS::sunnonlinsolnewton_shared
)
But I get this error when running cmake -DSILO_INCLUDE_DIR=/mnt/e/pion/extra_libraries/include -DSILO_LIBRARY=/mnt/e/pion/extra_libraries/lib/libsilo.so -DCMAKE_PREFIX_PATH=/mnt/e/sundials/install -DCMAKE_CXX_FLAGS="-I/mnt/e/sundials/install/include" ..
:
CMake Error at source/CMakeLists.txt:93 (add_executable):
Target “pion-ug” links to target “SUNDIALS::cvode_shared” but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
I have also added some lines for debugging after the find_package(SUNDIALS REQUIRED)
:
if (TARGET SUNDIALS::cvode_shared)
message(STATUS "SUNDIALS::cvode target found")
else()
message(STATUS "SUNDIALS::cvode target not found")
endif()
if (TARGET SUNDIALS::nvecserial_shared)
message(STATUS "SUNDIALS::nvecserial target found")
else()
message(STATUS "SUNDIALS::nvecserial target not found")
endif()
Both print “target not found”.
Successfully build pion using a manual installation of SUNDIALS (not installed using a package manager) [I need the manual installation].
Anurag Ravi Nimonkar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1