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

Provide a cmake utility dune_default_include_directories

parent e9c88282
No related branches found
No related tags found
2 merge requests!1470Fix wrong variable name to make target hash (2.10),!1355Provide a cmake utility dune_default_include_directories
......@@ -14,6 +14,7 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules)
#include the dune macros
include(DuneMacros)
dune_policy(SET DP0001 NEW)
# start a dune project with information from dune.module
dune_project()
......@@ -21,6 +22,9 @@ dune_project()
# Create a target for dune-common with a Dune::Common alias
dune_add_library(dunecommon EXPORT_NAME Common NAMESPACE Dune::)
# set include directories for dunecommon library
dune_default_include_directories(dunecommon PUBLIC)
# minimal c++ standard required
target_compile_features(dunecommon PUBLIC cxx_std_17)
......
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
#[=======================================================================[.rst:
DuneDefaultIncludeDirectories
-----------------------------
Add the default include directories to a target.
.. cmake:command:: dune_default_include_directories
Add the source and build directory the the targets include directories
in the build-interface and the corresponding installed include dir in
the install-interface.
.. code-block:: cmake
dune_default_include_directories(<target> [PRIVATE|PUBLIC|INTERFACE])
#]=======================================================================]
include_guard(GLOBAL)
function(dune_default_include_directories _target _scope)
target_include_directories(${_target} ${_scope}
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include_private>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
endfunction(dune_default_include_directories)
\ No newline at end of file
......@@ -35,6 +35,7 @@ enable_language(C) # Enable C to skip CXX bindings for some tests.
set(THREADS_PREFER_PTHREAD_FLAG TRUE CACHE BOOL "Prefer -pthread compiler and linker flag")
include(DuneAddLibrary)
include(DuneDefaultIncludeDirectories)
include(DuneEnableAllPackages)
include(DuneExecuteProcess)
include(DuneModuleDependencies)
......
......@@ -57,6 +57,9 @@ include(GNUInstallDirs)
include(Headercheck)
include(OverloadCompilerFlags)
include(DunePolicy)
dune_define_policy(DP0001 dune-common 3.0
"OLD behavior: Use global include_directories. NEW behavior: Include directories must be set on a module library target and are not set globally anymore.")
# Macro that should be called near the beginning of the top level CMakeLists.txt.
# Namely it sets up the module, defines basic variables and manages
......@@ -163,12 +166,17 @@ macro(dune_project)
include(CheckCXXFeatures)
# set include path and link path for the current project.
include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include_private")
dune_policy(GET DP0001 _include_policy)
if(_include_policy STREQUAL "OLD")
include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include_private")
set(CONFIG_INCLUDE_DIRS "set_and_check(${ProjectName}_INCLUDE_DIRS \"@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@\")")
endif()
unset(_include_policy)
add_definitions(-DHAVE_CONFIG_H)
# Create custom target for building the documentation
......@@ -288,7 +296,7 @@ set(${ProjectName}_INSTALLED @MODULE_INSTALLED@)
#report other information
set_and_check(${ProjectName}_PREFIX \"\${PACKAGE_PREFIX_DIR}\")
set_and_check(${ProjectName}_INCLUDE_DIRS \"@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@\")
${CONFIG_INCLUDE_DIRS}
set(${ProjectName}_CMAKE_CONFIG_VERSION \"${DUNE_COMMON_VERSION}\")
set(${ProjectName}_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\")
set(${ProjectName}_CXX_FLAGS_DEBUG \"${CMAKE_CXX_FLAGS_DEBUG}\")
......
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