diff --git a/cmake/AkantuInstall.cmake b/cmake/AkantuInstall.cmake index 4a7da3a2f..ed7530186 100644 --- a/cmake/AkantuInstall.cmake +++ b/cmake/AkantuInstall.cmake @@ -1,163 +1,165 @@ #=============================================================================== # @file AkantuInstall.cmake # # @author Nicolas Richart # # @date creation: Wed Oct 17 2012 # @date last modification: Fri Jan 22 2016 # # @brief Create the files that allows users to link with Akantu in an other # cmake project # # @section LICENSE # # Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de # Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des # Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== #=============================================================================== # Config gen for external packages #=============================================================================== configure_file(cmake/AkantuBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/AkantuBuildTreeSettings.cmake" @ONLY) file(WRITE "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " #=============================================================================== # @file AkantuConfigInclude.cmake # @author Nicolas Richart # @date Fri Jun 11 09:46:59 2010 # # @section LICENSE # # Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) # Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # # @section DESCRIPTION # #=============================================================================== ") package_get_all_packages(_package_list) foreach(_pkg_name ${_package_list}) # package_pkg_name(${_option} _pkg_name) _package_is_activated(${_pkg_name} _acctivated) _package_get_real_name(${_pkg_name} _real_name) string(TOUPPER ${_real_name} _real_pkg_name) file(APPEND "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " set(AKANTU_HAS_${_real_pkg_name} ${_acctivated})") _package_get_libraries(${_pkg_name} _libs) if(_libs) file(APPEND "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " set(AKANTU_${_real_pkg_name}_LIBRARIES ${_libs})") endif() _package_get_include_dir(${_pkg_name} _incs) if(_incs) file(APPEND "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " set(AKANTU_${_real_pkg_name}_INCLUDE_DIR ${_incs}) ") endif() _package_get_compile_flags(${_pkg_name} CXX _compile_flags) if(_compile_flags) file(APPEND "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " set(AKANTU_${_real_pkg_name}_COMPILE_CXX_FLAGS ${_compile_flags}) ") endif() endforeach() file(APPEND "${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake" " set(AKANTU_EXTRA_CXX_FLAGS \"${AKANTU_EXTRA_CXX_FLAGS}\") ") # Create the AkantuConfig.cmake and AkantuConfigVersion files get_filename_component(CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}" ABSOLUTE) configure_file(cmake/AkantuConfig.cmake.in "${PROJECT_BINARY_DIR}/AkantuConfig.cmake" @ONLY) configure_file(cmake/AkantuConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/AkantuConfigVersion.cmake" @ONLY) configure_file(cmake/AkantuUse.cmake "${PROJECT_BINARY_DIR}/AkantuUse.cmake" COPYONLY) package_is_activated(pybind11 _is_pybind11_activated) package_is_activated(swig _is_swig_activated) configure_file(cmake/akantu_environement.sh.in ${PROJECT_BINARY_DIR}/akantu_environement.sh @ONLY) configure_file(cmake/akantu_environement.csh.in ${PROJECT_BINARY_DIR}/akantu_environement.csh @ONLY) package_is_activated(python_interface _is_acticated) if(_is_acticated) find_package(PythonInterp ${AKANTU_PREFERRED_PYTHON_VERSION}) configure_file(cmake/akantu_install_environement.sh.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/akantu_environement.sh @ONLY) configure_file(cmake/akantu_install_environement.csh.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/akantu_environement.csh @ONLY) endif() +include(GNUInstallDirs) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/akantu_environement.sh ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/akantu_environement.csh - DESTINATION share/akantu${AKANTU_VERSION}) + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/akantu${AKANTU_VERSION}) include(CMakePackageConfigHelpers) configure_package_config_file(cmake/AkantuConfig.cmake.in "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION share/cmake/${PROJECT_NAME} + INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME} ) write_basic_package_version_file(${PROJECT_BINARY_DIR}/AkantuConfigVersion.cmake VERSION ${AKANTU_VERSION} COMPATIBILITY SameMajorVersion) # Install the export set for use with the install-tree install(FILES ${PROJECT_SOURCE_DIR}/cmake/Modules/FindScaLAPACK.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindMETIS.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindParMETIS.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindPETSc.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindMumps.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindScotch.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindGMSH.cmake ${PROJECT_BINARY_DIR}/AkantuConfig.cmake ${PROJECT_BINARY_DIR}/AkantuConfigInclude.cmake ${PROJECT_BINARY_DIR}/AkantuConfigVersion.cmake ${PROJECT_SOURCE_DIR}/cmake/AkantuUse.cmake ${PROJECT_SOURCE_DIR}/cmake/AkantuSimulationMacros.cmake ${PROJECT_SOURCE_DIR}/cmake/Modules/FindGMSH.cmake - DESTINATION share/cmake/${PROJECT_NAME} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME} COMPONENT dev) diff --git a/doc/manual/CMakeLists.txt b/doc/manual/CMakeLists.txt index eab5d3d00..e9677205f 100644 --- a/doc/manual/CMakeLists.txt +++ b/doc/manual/CMakeLists.txt @@ -1,167 +1,168 @@ #=============================================================================== # @file CMakeLists.txt # # @author Guillaume Anciaux # @author Nicolas Richart # # @date creation: Fri Sep 03 2010 # @date last modification: Tue Jan 19 2016 # # @brief Build the documentation # # @section LICENSE # # Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de # Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des # Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== #------------------------------------------------------------------------------# function(get_doc_label pkg_name label) string(REPLACE "_" "-" _pkg_tex_label_dash ${pkg_name}) string(TOLOWER "${_pkg_tex_label_dash}" _pkg_tex_label) set(TOLOWER "${_pkg_tex_label_dash}" _pkg_tex_label) set(${label} "pkg:${_pkg_tex_label}" PARENT_SCOPE) endfunction() function(get_doc_package_name pkg_name pkg_tex) _package_get_option_name(${pkg_name} _opt_name) string(REPLACE "_" "\\_" _pkg_tex "${_opt_name}") set(${pkg_tex} ${_pkg_tex} PARENT_SCOPE) endfunction() #------------------------------------------------------------------------------# function(generate_package_dependency_tex_doc pkg_name FILENAME LEVEL) _package_get_option_name(${pkg_name} _opt_name) string(REPLACE "_" "\\_" _pkg_tex "${_opt_name}") get_doc_label(${pkg_name} _pkg_tex_label) file(APPEND ${FILENAME} "\\AkantuPackageNameWithLabel{${_pkg_tex}}{${_pkg_tex_label}}{${LEVEL}}\\allowbreak\\xspace") math(EXPR _sub_level "${LEVEL}+1") _package_get_dependencies(${pkg_name} PRIVATE _private_dependencies) _package_get_dependencies(${pkg_name} INTERFACE _interface_dependencies) foreach(_dep_pkg_name ${_private_dependencies} ${_interface_dependencies}) generate_package_dependency_tex_doc(${_dep_pkg_name} ${FILENAME} ${_sub_level}) endforeach() endfunction() #------------------------------------------------------------------------------# function(generate_package_tex_doc pkg_name FILENAME) get_doc_package_name(${pkg_name} _pkg_tex) get_doc_label(${pkg_name} _pkg_tex_label) file(APPEND ${FILENAME} "\n\\begin{AkantuPackage}{${_pkg_tex}}{${_pkg_tex_label}}") _package_get_documentation(${pkg_name} _doc) if (_doc) file(APPEND ${FILENAME} "${_doc}") else() _package_get_filename(${pkg_name} _file_path) _package_get_real_name(${pkg_name} _pkg) get_filename_component(_file ${_file_path} NAME) string(REPLACE "_" "\\_" _escaped_file "${_file}") string(REPLACE "_" "\\_" _escaped_pkg "${_pkg}") set(_missing_doc "{\\color{red} TODO}: No Documentation in {\\color{blue} \\href{${_file_path}}{${_escaped_file}}}" "" "looking for the sequence: " "\\begin{cmake}" "\\package_declare_documentation(" " ${_escaped_pkg}" " \"documentation text\"" " )" "\\end{cmake}") set(_missing_doc_str "") foreach(_str ${_missing_doc}) set(_missing_doc_str "${_missing_doc_str}\n${_str}") endforeach() file(APPEND ${FILENAME} "${_missing_doc_str}") endif() _package_get_dependencies(${pkg_name} PRIVATE _private_dependencies) _package_get_dependencies(${pkg_name} INTERFACE _interface_dependencies) if(_private_dependencies OR _interface_dependencies) file(APPEND ${FILENAME} "\n\\begin{AkantuPackageDependencies}") foreach(_dep_pkg_name ${_private_dependencies} ${_interface_dependencies}) generate_package_dependency_tex_doc(${_dep_pkg_name} ${FILENAME} 1) endforeach() file(APPEND ${FILENAME} "\n\\end{AkantuPackageDependencies}") endif() file(APPEND ${FILENAME} "\n\\end{AkantuPackage} ") endfunction() #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# set(AKANTU_MANUAL_SOURCE_FOLDER ${CMAKE_CURRENT_BINARY_DIR}/latex) set(DOC_DEPS_TEX_FILENAME "${AKANTU_MANUAL_SOURCE_FOLDER}/manual-packages-doc.tex") file(WRITE ${DOC_DEPS_TEX_FILENAME} "") find_program(RUBBER_EXECUTABLE rubber) if (NOT RUBBER_EXECUTABLE) message(ERROR "Manual cannot be built without rubber latex compiler") endif() mark_as_advanced(RUBBER_EXECUTABLE) package_get_all_documentation_files(_manual_files) set(AKANTU_MANUAL_FILES_DEPEND) set(AKANTU_MANUAL_FILES_COPY_COMMAND) file(MAKE_DIRECTORY ${AKANTU_MANUAL_SOURCE_FOLDER}) foreach(_f ${_manual_files}) file(RELATIVE_PATH _rel_f ${CMAKE_CURRENT_SOURCE_DIR} "${_f}") list(APPEND AKANTU_MANUAL_FILES_DEPEND ${_f}) list(APPEND AKANTU_MANUAL_FILES_COPY_COMMAND COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${_rel_f}" "${_rel_f}") endforeach() -set(MANUAL_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/akantu_ug.pdf) +set(MANUAL_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/akantu_ug-v${AKANTU_VERSION}.pdf) add_custom_command( OUTPUT ${MANUAL_OUTPUT} DEPENDS ${AKANTU_MANUAL_FILES_DEPEND} ${DOC_DEPS_TEX_FILENAME} ${AKANTU_MANUAL_FILES_COPY_COMMAND} COMMAND ${RUBBER_EXECUTABLE} -dfq manual COMMAND ${CMAKE_COMMAND} -E copy manual.pdf ${MANUAL_OUTPUT} WORKING_DIRECTORY ${AKANTU_MANUAL_SOURCE_FOLDER} COMMENT "Compiling the user's manual" ) set_directory_properties(latex/$) add_custom_target(manual ALL DEPENDS ${MANUAL_OUTPUT}) -install(FILES ${MANUAL_OUTPUT} DESTINATION share/akantu-${AKANTU_VERSION}/doc) +install(FILES ${MANUAL_OUTPUT} + DESTINATION ${CMAKE_INSTALL_DOCDIR}) package_get_all_activated_packages(_package_list) foreach (_pkg_name ${_package_list}) generate_package_tex_doc(${_pkg_name} ${DOC_DEPS_TEX_FILENAME}) endforeach() configure_file(version-definition.tex.in "${AKANTU_MANUAL_SOURCE_FOLDER}/version-definition.tex" @ONLY) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 028b43cf7..fd90b0504 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,249 +1,250 @@ #=============================================================================== # @file CMakeLists.txt # # @author Guillaume Anciaux # @author Nicolas Richart # # @date creation: Mon Jun 14 2010 # @date last modification: Tue Feb 13 2018 # # @brief CMake file for the library # # @section LICENSE # # Copyright (©) 2010-2018 EPFL (Ecole Polytechnique Fédérale de Lausanne) # Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== #=============================================================================== # Package Management #=============================================================================== package_get_all_source_files( AKANTU_LIBRARY_SRCS AKANTU_LIBRARY_PUBLIC_HDRS AKANTU_LIBRARY_PRIVATE_HDRS ) package_get_all_include_directories( AKANTU_LIBRARY_INCLUDE_DIRS ) package_get_all_external_informations( PRIVATE_INCLUDE AKANTU_PRIVATE_EXTERNAL_INCLUDE_DIR INTERFACE_INCLUDE AKANTU_INTERFACE_EXTERNAL_INCLUDE_DIR LIBRARIES AKANTU_EXTERNAL_LIBRARIES ) package_get_all_compilation_flags(CXX _cxx_flags) set(AKANTU_EXTRA_CXX_FLAGS "${_cxx_flags}" CACHE STRING "Extra flags defined by loaded packages" FORCE) mark_as_advanced(AKANTU_EXTRA_CXX_FLAGS) foreach(src_ ${AKANTU_SPIRIT_SOURCES}) set_property(SOURCE ${src_} PROPERTY COMPILE_FLAGS "-g0 -Werror") endforeach() #=========================================================================== # header for blas/lapack (any other fortran libraries) #=========================================================================== package_is_activated(BLAS _blas_activated) package_is_activated(LAPACK _lapack_activated) if(_blas_activated OR _lapack_activated) if(CMAKE_Fortran_COMPILER) # ugly hack set(CMAKE_Fortran_COMPILER_LOADED TRUE) endif() include(FortranCInterface) FortranCInterface_HEADER( "${CMAKE_CURRENT_BINARY_DIR}/aka_fortran_mangling.hh" MACRO_NAMESPACE "AKA_FC_") mark_as_advanced(CDEFS) list(APPEND AKANTU_LIBRARY_PUBLIC_HDRS "${CMAKE_CURRENT_BINARY_DIR}/aka_fortran_mangling.hh" ) endif() list(APPEND AKANTU_LIBRARY_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}") set(AKANTU_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${AKANTU_LIBRARY_INCLUDE_DIRS} CACHE INTERNAL "Internal include directories to link with Akantu as a subproject") #=========================================================================== # configurations #=========================================================================== package_get_all_material_includes(AKANTU_MATERIAL_INCLUDES) package_get_all_material_lists(AKANTU_MATERIAL_LISTS) configure_file(model/solid_mechanics/material_list.hh.in "${CMAKE_CURRENT_BINARY_DIR}/material_list.hh" @ONLY) package_get_element_lists() configure_file(common/aka_element_classes_info.hh.in "${CMAKE_CURRENT_BINARY_DIR}/aka_element_classes_info.hh" @ONLY) configure_file(common/aka_config.hh.in "${CMAKE_CURRENT_BINARY_DIR}/aka_config.hh" @ONLY) list(APPEND AKANTU_LIBRARY_PUBLIC_HDRS "${CMAKE_CURRENT_BINARY_DIR}/material_list.hh" "${CMAKE_CURRENT_BINARY_DIR}/aka_element_classes_info.hh" "${CMAKE_CURRENT_BINARY_DIR}/aka_config.hh") #=============================================================================== # Debug infos #=============================================================================== set(AKANTU_GDB_DIR ${PROJECT_SOURCE_DIR}/cmake) if(UNIX AND NOT APPLE) string(TOUPPER "${CMAKE_BUILD_TYPE}" _u_build_type) if(_u_build_type STREQUAL "DEBUG" OR _u_build_type STREQUAL "RELWITHDEBINFO") configure_file(${PROJECT_SOURCE_DIR}/cmake/libakantu-gdb.py.in "${PROJECT_BINARY_DIR}/libakantu-gdb.py" @ONLY) configure_file(${PROJECT_SOURCE_DIR}/cmake/akantu-debug.cc.in "${PROJECT_BINARY_DIR}/akantu-debug.cc" @ONLY) list(APPEND AKANTU_LIBRARY_SRCS ${PROJECT_BINARY_DIR}/akantu-debug.cc) endif() else() find_program(GDB_EXECUTABLE gdb) if(GDB_EXECUTABLE) execute_process(COMMAND ${GDB_EXECUTABLE} --batch -x "${PROJECT_SOURCE_DIR}/cmake/gdb_python_path" OUTPUT_VARIABLE AKANTU_PYTHON_GDB_DIR ERROR_QUIET RESULT_VARIABLE _res) if(_res EQUAL 0 AND UNIX) set(GDB_USER_CONFIG $ENV{HOME}/.gdb/auto-load) file(MAKE_DIRECTORY ${GDB_USER_CONFIG}) configure_file(${PROJECT_SOURCE_DIR}/cmake/libakantu-gdb.py.in "${GDB_USER_CONFIG}/${CMAKE_SHARED_LIBRARY_PREFIX}akantu${CMAKE_SHARED_LIBRARY_SUFFIX}.${AKANTU_VERSION}-gdb.py" @ONLY) endif() endif() endif() #=============================================================================== # Library generation #=============================================================================== add_library(akantu ${AKANTU_LIBRARY_SRCS}) target_include_directories(akantu PRIVATE $ INTERFACE $ ) # small trick for build includes in public set_property(TARGET akantu APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $) target_include_directories(akantu SYSTEM PUBLIC ${AKANTU_INTERFACE_EXTERNAL_INCLUDE_DIR} ) target_include_directories(akantu SYSTEM PRIVATE ${AKANTU_PRIVATE_EXTERNAL_INCLUDE_DIR} ) target_link_libraries(akantu PUBLIC ${AKANTU_EXTERNAL_LIBRARIES}) set_target_properties(akantu PROPERTIES ${AKANTU_LIBRARY_PROPERTIES} # this contains the version COMPILE_FLAGS "${_cxx_flags}" #PRIVATE_HEADER ${AKANTU_LIBRARY_PRIVATE_HDRS} ) if(AKANTU_LIBRARY_PUBLIC_HDRS) set_property(TARGET akantu PROPERTY PUBLIC_HEADER ${AKANTU_LIBRARY_PUBLIC_HDRS}) endif() if(AKANTU_LIBRARY_PRIVATE_HDRS) set_property(TARGET akantu PROPERTY PRIVATE_HEADER ${AKANTU_LIBRARY_PRIVATE_HDRS}) endif() if(NOT CMAKE_VERSION VERSION_LESS 3.1) package_get_all_features_public(_PUBLIC_features) package_get_all_features_private(_PRIVATE_features) foreach(_type PRIVATE PUBLIC) if(_${_type}_features) target_compile_features(akantu ${_type} ${_${_type}_features}) endif() endforeach() else() set_target_properties(akantu PROPERTIES CXX_STANDARD 14 ) endif() package_get_all_extra_dependencies(_extra_target_dependencies) if(_extra_target_dependencies) # This only adding todo: find a solution for when a dependency was add the is removed... add_dependencies(akantu ${_extra_target_dependencies}) endif() package_get_all_export_list(AKANTU_EXPORT_LIST) list(APPEND AKANTU_EXPORT_LIST akantu) # TODO separate public from private headers include(GNUInstallDirs) install(TARGETS akantu EXPORT ${AKANTU_TARGETS_EXPORT} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Akantu_runtime # NAMELINK_ONLY # LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # COMPONENT Akantu_development # NAMELINK_SKIP Akantu_development ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Akantu_runtime RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Akantu_runtime - PUBLIC_HEADER DESTINATION include/akantu/ + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/akantu/ COMPONENT Akantu_development ) if("${AKANTU_TARGETS_EXPORT}" STREQUAL "AkantuTargets") - install(EXPORT AkantuTargets DESTINATION share/cmake/${PROJECT_NAME} + install(EXPORT AkantuTargets + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME} COMPONENT dev) #Export for build tree export(EXPORT AkantuTargets FILE "${CMAKE_BINARY_DIR}/AkantuTargets.cmake") export(PACKAGE Akantu) endif() #=============================================================================== # Adding module names for debug package_get_all_packages(_pkg_list) foreach(_pkg ${_pkg_list}) _package_get_real_name(${_pkg} _pkg_name) _package_get_source_files(${_pkg} _srcs _public_hdrs _private_hdrs) string(TOLOWER "${_pkg_name}" _l_package_name) set_property(SOURCE ${_srcs} ${_public_hdrs} ${_private_hdrs} APPEND PROPERTY COMPILE_DEFINITIONS AKANTU_MODULE=${_l_package_name}) endforeach() # print out the list of materials generate_material_list() register_target_to_tidy(akantu) diff --git a/third-party/akantu_iterators/CMakeLists.txt b/third-party/akantu_iterators/CMakeLists.txt index b021a4e7a..152ee2c69 100644 --- a/third-party/akantu_iterators/CMakeLists.txt +++ b/third-party/akantu_iterators/CMakeLists.txt @@ -1,73 +1,74 @@ cmake_minimum_required(VERSION 3.10) project(AkantuIterators) # ------------------------------------------------------------------------------ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(BUILD_SHARED_LIBS ON) if (NOT AKANTU_ITERATORS_PYTHON_MAJOR_VERSION) set(AKANTU_ITERATORS_PYTHON_MAJOR_VERSION 3) endif() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake) include(AkantuIteratorsTools) # ------------------------------------------------------------------------------ set(AKANTU_ITERATORS_PUBLIC_HDRS aka_compatibilty_with_cpp_standard.hh aka_iterators.hh aka_static_if.hh aka_tuple_tools.hh iterators/aka_arange_iterator.hh iterators/aka_enumerate_iterator.hh iterators/aka_filter_iterator.hh iterators/aka_named_zip_iterator.hh iterators/aka_transform_iterator.hh iterators/aka_zip_iterator.hh ) add_library(akantu_iterators INTERFACE) target_include_directories(akantu_iterators INTERFACE $ ) # small trick for build includes in public set_property(TARGET akantu_iterators APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $) set_property(TARGET akantu_iterators PROPERTY INTERFACE_PUBLIC_HEADER ${AKANTU_ITERATORS_PUBLIC_HDRS}) set_target_properties(akantu_iterators PROPERTIES INTERFACE_CXX_STANDARD 14 ) # ------------------------------------------------------------------------------ option(AKANTU_ITERATORS_TESTS "Activating tests" OFF) mark_as_advanced(AKANTU_ITERATORS_TESTS) if(AKANTU_ITERATORS_TESTS) enable_testing() add_external_package(GTest) add_subdirectory(test) endif() # ------------------------------------------------------------------------------ if(NOT AKANTU_ITERATORS_TARGETS_EXPORT) set(AKANTU_ITERATORS_TARGETS_EXPORT AkantuIteratorsTargets) endif() +include(GNUInstallDirs) install(TARGETS akantu_iterators EXPORT ${AKANTU_ITERATORS_TARGETS_EXPORT} - PUBLIC_HEADER DESTINATION include/akantu_iterators/ COMPONENT dev + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/akantu/ ) if("${AKANTU_ITERATORS_TARGETS_EXPORT}" STREQUAL "AkantuIteratorsTargets") - install(EXPORT AkantuIteratorsTargets DESTINATION share/cmake/${PROJECT_NAME} - COMPONENT dev) + install(EXPORT AkantuIteratorsTargets + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}) #Export for build tree export(EXPORT AkantuIteratorsTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/AkantuIteratorsTargets.cmake") export(PACKAGE AkantuIterators) endif()