Skip to content
Snippets Groups Projects
  • Markus Blatt's avatar
    da5f82f4
    [CMake] Guess build directory of dune-common · da5f82f4
    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
    da5f82f4
    History
    [CMake] Guess build directory of dune-common
    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
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)