-
Markus Blatt authored
Previously we relied on CMake's export(PACKAGE ...) function when finding dune packages without dune-control. This is error prone when using several instances of a dune-module (either with differing versions or built using different options). In this case there is no control which of the instances is used. Now we try to guess the correct build directory, if it was not provided with ${module}_DIR, ${module}_Root or in the CMAKE_PREFIX_PATH. Note that when using dunecontrol ${module}_DIR will always be set. We take the path of the current toplevel build directory and simply substitute any occurence of the name of current module with name of the module that we try to find. This works for both building in a subdirectory of the source tree (e.g. ${module-source}/build-cmake) or in a sibling directory
Markus Blatt authoredPreviously we relied on CMake's export(PACKAGE ...) function when finding dune packages without dune-control. This is error prone when using several instances of a dune-module (either with differing versions or built using different options). In this case there is no control which of the instances is used. Now we try to guess the correct build directory, if it was not provided with ${module}_DIR, ${module}_Root or in the CMAKE_PREFIX_PATH. Note that when using dunecontrol ${module}_DIR will always be set. We take the path of the current toplevel build directory and simply substitute any occurence of the name of current module with name of the module that we try to find. This works for both building in a subdirectory of the source tree (e.g. ${module-source}/build-cmake) or in a sibling directory
CMakeLists.txt 848 B
# set up project
project("dune-istl" C CXX)
# general stuff
cmake_minimum_required(VERSION 2.8.6)
# guess build tree of dune-common
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})
endif()
#find dune-common and set the module path
find_package(dune-common)
list(APPEND CMAKE_MODULE_PATH ${dune-common_MODULE_PATH}
"${PROJECT_SOURCE_DIR}/cmake/modules")
#include the dune macros
include(DuneMacros)
# start a dune project with information from dune.module
dune_project()
add_subdirectory("cmake/modules")
add_subdirectory("m4")
add_subdirectory("dune")
add_subdirectory("doc")
# finalize the dune project, e.g. generating config.h etc.
finalize_dune_project(GENERATE_CONFIG_H_CMAKE)