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 ...@@ -27,5 +27,5 @@ mkdir dune-copasi/test/build-cmake && cd dune-copasi/test/build-cmake
echo "cmake $CMAKE_FLAGS .." echo "cmake $CMAKE_FLAGS .."
eval 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 ctest -j4 -L "DUNE_SYSTEMTEST" --output-on-failure
...@@ -27,5 +27,5 @@ mkdir dune-copasi/test/build-cmake && cd dune-copasi/test/build-cmake ...@@ -27,5 +27,5 @@ mkdir dune-copasi/test/build-cmake && cd dune-copasi/test/build-cmake
echo "cmake $CMAKE_FLAGS .." echo "cmake $CMAKE_FLAGS .."
eval 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 ctest -j4 -L "unit" --output-on-failure
...@@ -4,7 +4,7 @@ project(dune-copasi CXX) ...@@ -4,7 +4,7 @@ project(dune-copasi CXX)
if(NOT (dune-common_DIR OR dune-common_ROOT OR if(NOT (dune-common_DIR OR dune-common_ROOT OR
"${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*")) "${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR
${PROJECT_BINARY_DIR}) "${PROJECT_BINARY_DIR}")
endif() endif()
cmake_policy(SET CMP0074 NEW) cmake_policy(SET CMP0074 NEW)
...@@ -98,41 +98,39 @@ finalize_dune_project(GENERATE_CONFIG_H_CMAKE) ...@@ -98,41 +98,39 @@ finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
target_compile_definitions(dune-copasi INTERFACE HAVE_DUNE_COPASI_CONFIG_H) target_compile_definitions(dune-copasi INTERFACE HAVE_DUNE_COPASI_CONFIG_H)
# install generated config in build and install directories # install generated config in build and install directories
file(COPY file(COPY "${CMAKE_CURRENT_BINARY_DIR}/config.h"
"${CMAKE_CURRENT_BINARY_DIR}/config.h" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/dune/copasi"
DESTINATION
"${CMAKE_CURRENT_BINARY_DIR}/dune/copasi"
) )
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dune/copasi/config.h" install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dune/copasi/config.h"
COMPONENT Development COMPONENT Development
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/dune/copasi") DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/dune/copasi"
)
# taget configuration for downstream projects # taget configuration for downstream projects
install(TARGETS dune-copasi install(TARGETS dune-copasi
EXPORT dune-copasi-targets EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE 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 # export targets to be used with the installed package
install(EXPORT dune-copasi-targets install(EXPORT dune-copasi-targets
FILE FILE dune-copasi-targets.cmake
dune-copasi-targets.cmake NAMESPACE dune-copasi::
NAMESPACE COMPONENT Development
dune:: DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dune-copasi"
DESTINATION
"${CMAKE_INSTALL_LIBDIR}/cmake/dune-copasi"
) )
# export targets to be used with build directories # export targets to be used with build directories
export(EXPORT dune-copasi-targets export(EXPORT dune-copasi-targets
FILE FILE "${CMAKE_CURRENT_BINARY_DIR}/dune-copasi-targets.cmake"
${CMAKE_CURRENT_BINARY_DIR}/dune-copasi-targets.cmake NAMESPACE dune-copasi::
NAMESPACE
dune::
) )
# include tests as a sub project # include tests as a sub project
add_library(dune::dune-copasi ALIAS dune-copasi) add_library(dune-copasi:: ALIAS dune-copasi)
add_subdirectory(test) # add_subdirectory(test)
include(GNUInstallDirs) include(GNUInstallDirs)
option(BUILD_SHARED_LIBS "Global flag to cause add_library() to create shared libraries if ON" OFF)
target_include_directories(dune-copasi target_include_directories(dune-copasi
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"
) )
# SingleDomain library # SingleDomain library
add_library(dune-copasi-sd-lib add_library(singldomain-lib
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
dune_copasi_sd_fv.cc dune_copasi_sd_fv.cc
dune_copasi_sd_cg.cc dune_copasi_sd_cg.cc
dune_copasi_sd_fv_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}> $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>) $<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>
target_link_libraries(dune-copasi-sd-lib PRIVATE dune-copasi) )
target_link_libraries(singldomain-lib PRIVATE dune-copasi)
if(DUNE_COPASI_SD_LIBRARY) if(DUNE_COPASI_SD_LIBRARY)
set_target_properties(dune-copasi-sd-lib PROPERTIES EXCLUDE_FROM_ALL OFF) set_target_properties(singldomain-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE dune-copasi-sd-lib) target_link_libraries(dune-copasi INTERFACE singldomain-lib)
target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_SD_LIBRARY) target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_SD_LIBRARY)
install(TARGETS dune-copasi-sd-lib
install(TARGETS singldomain-lib
EXPORT dune-copasi-targets EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libraries
OPTIONAL NAMELINK_COMPONENT Development
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Development
) )
endif() endif()
# MultiDomain library # MultiDomain library
add_library(dune-copasi-md-lib add_library(multidomain-lib
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
dune_copasi_md_fv.cc dune_copasi_md_fv.cc
dune_copasi_md_cg.cc dune_copasi_md_cg.cc
dune_copasi_md_fv_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}> $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>) $<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>
target_link_libraries(dune-copasi-md-lib PRIVATE dune-copasi) )
target_link_libraries(multidomain-lib PRIVATE dune-copasi)
if(DUNE_COPASI_MD_LIBRARY) if(DUNE_COPASI_MD_LIBRARY)
set_target_properties(dune-copasi-md-lib PROPERTIES EXCLUDE_FROM_ALL OFF) set_target_properties(multidomain-lib PROPERTIES EXCLUDE_FROM_ALL OFF)
target_link_libraries(dune-copasi INTERFACE dune-copasi-md-lib) target_link_libraries(dune-copasi INTERFACE multidomain-lib)
target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_MD_LIBRARY) target_compile_definitions(dune-copasi INTERFACE DUNE_COPASI_MD_LIBRARY)
install(TARGETS dune-copasi-md-lib
install(TARGETS multidomain-lib
EXPORT dune-copasi-targets EXPORT dune-copasi-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libraries
OPTIONAL NAMELINK_COMPONENT Development
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT Development
) )
endif() endif()
...@@ -6,26 +6,28 @@ target_sources(dune-copasi ...@@ -6,26 +6,28 @@ target_sources(dune-copasi
) )
# SingleDomain executable # SingleDomain executable
add_executable(dune-copasi-sd EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_sd.cc") add_executable(singledomain-exec EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_sd.cc")
target_link_libraries(dune-copasi-sd PRIVATE dune-copasi) target_link_libraries(singledomain-exec PRIVATE dune-copasi)
if(DUNE_COPASI_SD_EXECUTABLE) if(DUNE_COPASI_SD_EXECUTABLE)
set_target_properties(dune-copasi-sd PROPERTIES EXCLUDE_FROM_ALL OFF) set_target_properties(singledomain-exec PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS dune-copasi-sd install(TARGETS singledomain-exec
EXPORT dune-copasi-targets EXPORT dune-copasi-targets
COMPONENT MultiDomain COMPONENT Runtime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
) )
endif() endif()
set_property(TARGET singledomain-exec PROPERTY RUNTIME_OUTPUT_NAME dune-copasi-sd)
# MultiDomain executable # MultiDomain executable
add_executable(dune-copasi-md EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_md.cc") add_executable(multidomain-exec EXCLUDE_FROM_ALL "${CMAKE_CURRENT_SOURCE_DIR}/dune_copasi_md.cc")
target_link_libraries(dune-copasi-md PRIVATE dune-copasi) target_link_libraries(multidomain-exec PRIVATE dune-copasi)
if(DUNE_COPASI_MD_EXECUTABLE) if(DUNE_COPASI_MD_EXECUTABLE)
set_target_properties(dune-copasi-md PROPERTIES EXCLUDE_FROM_ALL OFF) set_target_properties(multidomain-exec PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS dune-copasi-md install(TARGETS multidomain-exec
EXPORT dune-copasi-targets EXPORT dune-copasi-targets
COMPONENT MultiDomain COMPONENT Runtime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
) )
endif() endif()
set_property(TARGET multidomain-exec PROPERTY RUNTIME_OUTPUT_NAME dune-copasi-md)
cmake_minimum_required(VERSION 3.13) cmake_minimum_required(VERSION 3.13)
project(dune-copasi-tests CXX) project(dune-copasi-tests CXX)
if(NOT TARGET dune::dune-copasi) if(NOT TARGET dune-copasi::dune-copasi)
find_package(dune-copasi REQUIRED IMPORTED) find_package(dune-copasi REQUIRED IMPORTED COMPONENTS Libraries Development Runtime)
endif() endif()
if(NOT dune-testtools) if(NOT dune-testtools)
...@@ -36,33 +36,33 @@ dune_symlink_to_source_files(FILES "data" DESTINATION "." ) ...@@ -36,33 +36,33 @@ dune_symlink_to_source_files(FILES "data" DESTINATION "." )
dune_add_test(NAME test_dynamic_power_local_finite_element dune_add_test(NAME test_dynamic_power_local_finite_element
SOURCES test_dynamic_power_local_finite_element.cc SOURCES test_dynamic_power_local_finite_element.cc
LINK_LIBRARIES dune::dune-copasi LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit) LABELS unit)
dune_add_test(NAME test_concepts_pdelab dune_add_test(NAME test_concepts_pdelab
SOURCES test_concepts_pdelab.cc SOURCES test_concepts_pdelab.cc
LINK_LIBRARIES dune::dune-copasi LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit) LABELS unit)
dune_add_test(NAME test_concepts_grid dune_add_test(NAME test_concepts_grid
SOURCES test_concepts_grid.cc SOURCES test_concepts_grid.cc
LINK_LIBRARIES dune::dune-copasi LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit) LABELS unit)
dune_add_test(NAME test_concepts_typetree dune_add_test(NAME test_concepts_typetree
SOURCES test_concepts_typetree.cc SOURCES test_concepts_typetree.cc
LINK_LIBRARIES dune::dune-copasi LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit) LABELS unit)
dune_add_test(NAME test_tiff_grayscale dune_add_test(NAME test_tiff_grayscale
SOURCES test_tiff_grayscale.cc SOURCES test_tiff_grayscale.cc
LINK_LIBRARIES dune::dune-copasi LINK_LIBRARIES dune-copasi::dune-copasi
LABELS unit) LABELS unit)
# # SingleDomain tests # # SingleDomain tests
add_executable(dune-copasi-sd-compare EXCLUDE_FROM_ALL dune_copasi_sd_compare.cc) 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_custom_target(build_system_tests)
add_dependencies(build_system_tests dune-copasi-sd-compare) add_dependencies(build_system_tests dune-copasi-sd-compare)
...@@ -81,18 +81,18 @@ if (dune-testtools_FOUND) ...@@ -81,18 +81,18 @@ if (dune-testtools_FOUND)
TARGET dune-copasi-sd-compare TARGET dune-copasi-sd-compare
INIFILE test_gauss.mini) INIFILE test_gauss.mini)
if(dune::dune-copasi-sd) if(dune-copasi::singledomain-exec)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-sd TARGET dune-copasi::singledomain-exec
SCRIPT dune_vtkcompare.py SCRIPT dune_vtkcompare.py
INIFILE test_tiff.mini) INIFILE test_tiff.mini)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-sd TARGET dune-copasi::singledomain-exec
INIFILE test_brusselator.mini) INIFILE test_brusselator.mini)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-sd TARGET dune-copasi::singledomain-exec
INIFILE test_no_writer.mini) INIFILE test_no_writer.mini)
endif() endif()
endif() endif()
...@@ -101,8 +101,8 @@ 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-compare EXCLUDE_FROM_ALL dune_copasi_md_compare.cc)
add_executable(dune-copasi-md-jacobian EXCLUDE_FROM_ALL test_jacobian.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-compare PRIVATE dune-copasi::dune-copasi)
target_link_libraries(dune-copasi-md-jacobian PRIVATE dune::dune-copasi) target_link_libraries(dune-copasi-md-jacobian PRIVATE dune-copasi::dune-copasi)
add_dependencies(build_system_tests add_dependencies(build_system_tests
dune-copasi-md-compare dune-copasi-md-compare
...@@ -128,19 +128,19 @@ if (dune-testtools_FOUND) ...@@ -128,19 +128,19 @@ if (dune-testtools_FOUND)
TARGET dune-copasi-md-compare TARGET dune-copasi-md-compare
INIFILE test_gauss_mixed_geometry.mini) INIFILE test_gauss_mixed_geometry.mini)
if(dune::dune-copasi-md) if(dune-copasi::multidomain-exec)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-md TARGET dune-copasi::multidomain-exec
SCRIPT dune_vtkcompare.py SCRIPT dune_vtkcompare.py
INIFILE test_tiff.mini) INIFILE test_tiff.mini)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-md TARGET dune-copasi::multidomain-exec
SCRIPT dune_vtkcompare.py SCRIPT dune_vtkcompare.py
INIFILE test_cell.mini) INIFILE test_cell.mini)
add_system_test_per_target( add_system_test_per_target(
TARGET dune::dune-copasi-md TARGET dune-copasi::multidomain-exec
INIFILE test_no_writer.mini) INIFILE test_no_writer.mini)
endif() 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