Skip to content
Snippets Groups Projects
Commit c03f5bdb authored by Santiago Ospina De Los Ríos's avatar Santiago Ospina De Los Ríos
Browse files

Fix CMake targets

This makes more sensible name choices for exported target names, it manages installation components and fixes the test stage in CI 
parent b9aff281
No related branches found
No related tags found
1 merge request!49Resolve "Finish installation and usage instruction on the documentation"
Pipeline #33206 failed
......@@ -27,5 +27,5 @@ mkdir dune-copasi/test/build-cmake && cd dune-copasi/test/build-cmake
echo "cmake $CMAKE_FLAGS .."
eval cmake $CMAKE_FLAGS ..
cmake --target build_system_tests
cmake --build . --target build_system_tests
ctest -j4 -L "DUNE_SYSTEMTEST" --output-on-failure
......@@ -27,5 +27,5 @@ mkdir dune-copasi/test/build-cmake && cd dune-copasi/test/build-cmake
echo "cmake $CMAKE_FLAGS .."
eval cmake $CMAKE_FLAGS ..
cmake --target build_unit_tests
cmake --build . --target build_unit_tests
ctest -j4 -L "unit" --output-on-failure
......@@ -4,7 +4,7 @@ project(dune-copasi CXX)
if(NOT (dune-common_DIR OR dune-common_ROOT OR
"${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR
${PROJECT_BINARY_DIR})
"${PROJECT_BINARY_DIR}")
endif()
cmake_policy(SET CMP0074 NEW)
......@@ -98,41 +98,39 @@ finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
target_compile_definitions(dune-copasi INTERFACE HAVE_DUNE_COPASI_CONFIG_H)
# install generated config in build and install directories
file(COPY
"${CMAKE_CURRENT_BINARY_DIR}/config.h"
DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}/dune/copasi"
file(COPY "${CMAKE_CURRENT_BINARY_DIR}/config.h"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/dune/copasi"
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dune/copasi/config.h"
COMPONENT Development
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/dune/copasi")
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/dune/copasi"
)
# taget configuration for downstream projects
install(TARGETS dune-copasi
EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
EXPORT dune-copasi-targets
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Libraries
NAMELINK_COMPONENT Development
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Development
)
# export targets to be used with the installed package
install(EXPORT dune-copasi-targets
FILE
dune-copasi-targets.cmake
NAMESPACE
dune::
DESTINATION
"${CMAKE_INSTALL_LIBDIR}/cmake/dune-copasi"
FILE dune-copasi-targets.cmake
NAMESPACE dune-copasi::
COMPONENT Development
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dune-copasi"
)
# export targets to be used with build directories
export(EXPORT dune-copasi-targets
FILE
${CMAKE_CURRENT_BINARY_DIR}/dune-copasi-targets.cmake
NAMESPACE
dune::
FILE "${CMAKE_CURRENT_BINARY_DIR}/dune-copasi-targets.cmake"
NAMESPACE dune-copasi::
)
# include tests as a sub project
add_library(dune::dune-copasi ALIAS dune-copasi)
add_subdirectory(test)
add_library(dune-copasi:: ALIAS dune-copasi)
# add_subdirectory(test)
include(GNUInstallDirs)
option(BUILD_SHARED_LIBS "Global flag to cause add_library() to create shared libraries if ON" OFF)
target_include_directories(dune-copasi
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
)
# SingleDomain library
add_library(dune-copasi-sd-lib
add_library(singldomain-lib
EXCLUDE_FROM_ALL
dune_copasi_sd_fv.cc
dune_copasi_sd_cg.cc
dune_copasi_sd_fv_cg.cc
)
target_link_directories(dune-copasi-sd-lib PUBLIC
target_link_directories(singldomain-lib PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>)
target_link_libraries(dune-copasi-sd-lib PRIVATE dune-copasi)
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>
)
target_link_libraries(singldomain-lib PRIVATE dune-copasi)
if(DUNE_COPASI_SD_LIBRARY)
set_target_properties(dune-copasi-sd-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE dune-copasi-sd-lib)
set_target_properties(singldomain-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE singldomain-lib)
target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_SD_LIBRARY)
install(TARGETS dune-copasi-sd-lib
install(TARGETS singldomain-lib
EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
OPTIONAL
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Libraries
NAMELINK_COMPONENT Development
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Development
)
endif()
# MultiDomain library
add_library(dune-copasi-md-lib
add_library(multidomain-lib
EXCLUDE_FROM_ALL
dune_copasi_md_fv.cc
dune_copasi_md_cg.cc
dune_copasi_md_fv_cg.cc
)
target_link_directories(dune-copasi-md-lib PUBLIC
target_link_directories(multidomain-lib PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>)
target_link_libraries(dune-copasi-md-lib PRIVATE dune-copasi)
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>
)
target_link_libraries(multidomain-lib PRIVATE dune-copasi)
if(DUNE_COPASI_MD_LIBRARY)
set_target_properties(dune-copasi-md-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE dune-copasi-md-lib)
set_target_properties(multidomain-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE multidomain-lib)
target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_MD_LIBRARY)
install(TARGETS dune-copasi-md-lib
install(TARGETS multidomain-lib
EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
OPTIONAL
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Libraries
NAMELINK_COMPONENT Development
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Development
)
endif()
......@@ -6,26 +6,28 @@ target_sources(dune-copasi
)
# SingleDomain executable
add_executable(dune-copasi-sd EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_sd.cc")
target_link_libraries(dune-copasi-sd PRIVATE dune-copasi)
add_executable(singledomain-exec EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_sd.cc")
target_link_libraries(singledomain-exec PRIVATE dune-copasi)
if(DUNE_COPASI_SD_EXECUTABLE)
set_target_properties(dune-copasi-sd PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS dune-copasi-sd
set_target_properties(singledomain-exec PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS singledomain-exec
EXPORT dune-copasi-targets
COMPONENT MultiDomain
COMPONENT Runtime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
set_property(TARGET singledomain-exec PROPERTY RUNTIME_OUTPUT_NAME dune-copasi-sd)
# MultiDomain executable
add_executable(dune-copasi-md EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_md.cc")
target_link_libraries(dune-copasi-md PRIVATE dune-copasi)
add_executable(multidomain-exec EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_md.cc")
target_link_libraries(multidomain-exec PRIVATE dune-copasi)
if(DUNE_COPASI_MD_EXECUTABLE)
set_target_properties(dune-copasi-md PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS dune-copasi-md
set_target_properties(multidomain-exec PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS multidomain-exec
EXPORT dune-copasi-targets
COMPONENT MultiDomain
COMPONENT Runtime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
set_property(TARGET multidomain-exec PROPERTY RUNTIME_OUTPUT_NAME dune-copasi-md)
cmake_minimum_required(VERSION 3.13)
project(dune-copasi-tests CXX)
if(NOT TARGET dune::dune-copasi)
find_package(dune-copasi REQUIRED IMPORTED)
if(NOT TARGET dune-copasi::dune-copasi)
find_package(dune-copasi REQUIRED IMPORTED COMPONENTS Libraries Development Runtime)
endif()
if(NOT dune-testtools)
......@@ -36,33 +36,33 @@ dune_symlink_to_source_files(FILES "data" DESTINATION "." )
dune_add_test(NAME test_dynamic_power_local_finite_element
SOURCES test_dynamic_power_local_finite_element.cc
LINK_LIBRARIES dune::dune-copasi
LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit)
dune_add_test(NAME test_concepts_pdelab
SOURCES test_concepts_pdelab.cc
LINK_LIBRARIES dune::dune-copasi
LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit)
dune_add_test(NAME test_concepts_grid
SOURCES test_concepts_grid.cc
LINK_LIBRARIES dune::dune-copasi
LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit)
dune_add_test(NAME test_concepts_typetree
SOURCES test_concepts_typetree.cc
LINK_LIBRARIES dune::dune-copasi
LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit)
dune_add_test(NAME test_tiff_grayscale
SOURCES test_tiff_grayscale.cc
LINK_LIBRARIES dune::dune-copasi
LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit)
# # SingleDomain tests
add_executable(dune-copasi-sd-compare EXCLUDE_FROM_ALL dune_copasi_sd_compare.cc)
target_link_libraries(dune-copasi-sd-compare PRIVATE dune::dune-copasi)
target_link_libraries(dune-copasi-sd-compare PRIVATE dune-copasi::dune-copasi)
add_custom_target(build_system_tests)
add_dependencies(build_system_tests dune-copasi-sd-compare)
......@@ -81,18 +81,18 @@ if (dune-testtools_FOUND)
TARGET dune-copasi-sd-compare
INIFILE test_gauss.mini)
if(dune::dune-copasi-sd)
if(dune-copasi::singledomain-exec)
add_system_test_per_target(
TARGET dune::dune-copasi-sd
TARGET dune-copasi::singledomain-exec
SCRIPT dune_vtkcompare.py
INIFILE test_tiff.mini)
add_system_test_per_target(
TARGET dune::dune-copasi-sd
TARGET dune-copasi::singledomain-exec
INIFILE test_brusselator.mini)
add_system_test_per_target(
TARGET dune::dune-copasi-sd
TARGET dune-copasi::singledomain-exec
INIFILE test_no_writer.mini)
endif()
endif()
......@@ -101,8 +101,8 @@ endif()
add_executable(dune-copasi-md-compare EXCLUDE_FROM_ALL dune_copasi_md_compare.cc)
add_executable(dune-copasi-md-jacobian EXCLUDE_FROM_ALL test_jacobian.cc)
target_link_libraries(dune-copasi-md-compare PRIVATE dune::dune-copasi)
target_link_libraries(dune-copasi-md-jacobian PRIVATE dune::dune-copasi)
target_link_libraries(dune-copasi-md-compare PRIVATE dune-copasi::dune-copasi)
target_link_libraries(dune-copasi-md-jacobian PRIVATE dune-copasi::dune-copasi)
add_dependencies(build_system_tests
dune-copasi-md-compare
......@@ -128,19 +128,19 @@ if (dune-testtools_FOUND)
TARGET dune-copasi-md-compare
INIFILE test_gauss_mixed_geometry.mini)
if(dune::dune-copasi-md)
if(dune-copasi::multidomain-exec)
add_system_test_per_target(
TARGET dune::dune-copasi-md
TARGET dune-copasi::multidomain-exec
SCRIPT dune_vtkcompare.py
INIFILE test_tiff.mini)
add_system_test_per_target(
TARGET dune::dune-copasi-md
TARGET dune-copasi::multidomain-exec
SCRIPT dune_vtkcompare.py
INIFILE test_cell.mini)
add_system_test_per_target(
TARGET dune::dune-copasi-md
TARGET dune-copasi::multidomain-exec
INIFILE test_no_writer.mini)
endif()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment