mirror of
https://github.com/OPM/ResInsight.git
synced 2024-12-28 18:01:08 -06:00
526 lines
18 KiB
CMake
526 lines
18 KiB
CMake
cmake_minimum_required (VERSION 2.8.12)
|
|
|
|
include (CheckCSourceCompiles)
|
|
project (ResInsight)
|
|
|
|
set (VIZ_MODULES_FOLDER_NAME Fwk/VizFwk)
|
|
|
|
cmake_policy(SET CMP0020 NEW)
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
SET(BUILD_SHARED_LIBS OFF CACHE BOOL "ERT: Build shared libraries")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
################################################################################
|
|
# Setup the main platform defines
|
|
################################################################################
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
add_definitions(-DCVF_LINUX)
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
add_definitions(-DCVF_OSX)
|
|
elseif(MSVC)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /std:c++14")
|
|
endif()
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set(CMAKE_CXX_FLAGS "-DCVF_LINUX -pipe -Wextra -Woverloaded-virtual -Wformat -std=c++11")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -g3 -O0 -DDEBUG -D_DEBUG")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNO_DEBUG")
|
|
endif()
|
|
|
|
|
|
################################################################################
|
|
# OpenMP
|
|
################################################################################
|
|
option (RESINSIGHT_USE_OPENMP "Enable OpenMP parallellization in the code" ON)
|
|
if (RESINSIGHT_USE_OPENMP)
|
|
find_package(OpenMP)
|
|
if(OPENMP_FOUND)
|
|
message(STATUS "Enabling OpenMP support")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
|
|
else()
|
|
message(STATUS "Disabling OpenMP support")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
################################################################################
|
|
# Version number
|
|
################################################################################
|
|
include (ResInsightVersion.cmake)
|
|
|
|
|
|
################################################################################
|
|
# Octave
|
|
################################################################################
|
|
find_package(Octave)
|
|
|
|
################################################################################
|
|
# cotire
|
|
# Fully automated CMake module for build speedup
|
|
# https://github.com/sakra/cotire
|
|
################################################################################
|
|
|
|
option(RESINSIGHT_ENABLE_COTIRE "Experimental speedup of compilation using cotire" OFF)
|
|
mark_as_advanced(FORCE RESINSIGHT_ENABLE_COTIRE)
|
|
if(RESINSIGHT_ENABLE_COTIRE)
|
|
|
|
if(NOT COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES)
|
|
message(STATUS "cotire: Setting default number of includes to 5")
|
|
set(COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES 5)
|
|
endif()
|
|
|
|
include(cotire)
|
|
endif()
|
|
|
|
# always include cotire tools to avoid checking if a macro is available
|
|
include(cafCotireTools)
|
|
|
|
################################################################################
|
|
# ERT
|
|
################################################################################
|
|
|
|
if (NOT MSVC)
|
|
# Linux: Optional configuration of externally installed ERT, requires path to libraries and includes
|
|
set(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT "" CACHE PATH "Path to installed ERT libraries")
|
|
set(RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT "" CACHE PATH "Path to installed ERT includes")
|
|
endif()
|
|
|
|
if (RESINSIGHT_ERT_EXTERNAL_LIB_ROOT OR RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT)
|
|
if (NOT(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT AND RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT))
|
|
message(FATAL_ERROR "Both RESINSIGHT_ERT_EXTERNAL_LIB_ROOT and RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT must be defined")
|
|
endif()
|
|
|
|
message(FATAL_ERROR "TODO: Building using and external system installed ERT is broken.")
|
|
|
|
list(APPEND ERT_INCLUDE_DIRS
|
|
${RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT}
|
|
)
|
|
|
|
list(APPEND ERT_LIBRARIES
|
|
${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT}/libecl.so
|
|
)
|
|
|
|
else()
|
|
|
|
# Disable install of ERT libs and headers, as Ert code is compiled and linked directly
|
|
SET(INSTALL_ERT OFF CACHE BOOL "ERT: Install library")
|
|
SET(ERT_USE_OPENMP ${OPENMP_FOUND} CACHE BOOL "ERT: Compile using OpenMP")
|
|
|
|
# Remember original state
|
|
set(ORIGINAL_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
|
|
|
|
if (MSVC)
|
|
# Force static linking on Windows
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
set(ERT_HAVE_UNISTD OFF) #If anyone has mingw installed
|
|
else ()
|
|
set(RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT "" CACHE STRING "Path to ERT CMakeList.txt (source path)")
|
|
|
|
# Force dynamic linking on other platforms
|
|
# Copy of libraries into install folder of ResInsight is done a bit further down in this file
|
|
set(BUILD_SHARED_LIBS ON)
|
|
endif()
|
|
|
|
if (RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT)
|
|
add_subdirectory(${RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT} ${CMAKE_BINARY_DIR}/ThirdParty/Ert)
|
|
else()
|
|
add_subdirectory(ThirdParty/Ert)
|
|
endif ()
|
|
|
|
if (MSVC)
|
|
# libecl : Disable some warnings
|
|
set_target_properties(ecl PROPERTIES COMPILE_FLAGS "/wd4244 /wd4267 /wd4013 /wd4190 /wd4018 /wd4477 /wd4098 /wd4293 /wd4305 /wd4020 /wd4028 /wd4715")
|
|
endif()
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
ecl
|
|
)
|
|
|
|
if (MSVC)
|
|
set_property(TARGET
|
|
ecl
|
|
PROPERTY FOLDER "Thirdparty/ERT"
|
|
)
|
|
endif()
|
|
|
|
# Restore original state
|
|
set(BUILD_SHARED_LIBS ${ORIGINAL_BUILD_SHARED_LIBS})
|
|
|
|
endif(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT OR RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT)
|
|
|
|
|
|
################################################################################
|
|
# HDF5
|
|
################################################################################
|
|
if(MSVC)
|
|
set(RESINSIGHT_HDF5_DIR "" CACHE PATH "Windows Only: Optional path to HDF5 libraries on Windows")
|
|
endif()
|
|
|
|
option (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING "Enable prototype feature Souring (requires third party library HDF5)" ON)
|
|
mark_as_advanced(FORCE RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING)
|
|
|
|
if (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING)
|
|
if(MSVC)
|
|
if(NOT ${RESINSIGHT_HDF5_DIR} EQUAL "")
|
|
add_definitions(-DH5_BUILT_AS_DYNAMIC_LIB)
|
|
|
|
include_directories(${RESINSIGHT_HDF5_DIR}/include)
|
|
|
|
list(APPEND EXTERNAL_LINK_LIBRARIES
|
|
${RESINSIGHT_HDF5_DIR}/lib/hdf5.lib
|
|
${RESINSIGHT_HDF5_DIR}/lib/hdf5_cpp.lib
|
|
)
|
|
|
|
set(RESINSIGHT_FOUND_HDF5 1)
|
|
message( STATUS "Using HDF5 from : ${RESINSIGHT_HDF5_DIR}" )
|
|
else()
|
|
message( WARNING "Use of HDF5 is enabled, but RESINSIGHT_HDF5_DIR is empty. Specify RESINSIGHT_HDF5_DIR to be able to use HDF5" )
|
|
endif()
|
|
else()
|
|
find_package(HDF5 COMPONENTS CXX)
|
|
if (HDF5_FOUND)
|
|
add_definitions(-DH5_BUILT_AS_DYNAMIC_LIB)
|
|
add_definitions(${HDF5_DEFINITIONS})
|
|
include_directories(${HDF5_INCLUDE_DIRS})
|
|
|
|
list(APPEND EXTERNAL_LINK_LIBRARIES
|
|
${HDF5_LIBRARIES}
|
|
)
|
|
|
|
set(RESINSIGHT_FOUND_HDF5 1)
|
|
message( STATUS "Using HDF5 libraries : ${HDF5_LIBRARIES}" )
|
|
|
|
option (RESINSIGHT_HDF5_BUNDLE_LIBRARIES "Bundle HDF5 libraries" OFF)
|
|
mark_as_advanced(FORCE RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
|
|
if (RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
|
|
message( STATUS "Bundling of HDF5 libraries is enabled" )
|
|
endif() # RESINSIGHT_HDF5_BUNDLE_LIBRARIES
|
|
|
|
|
|
else()
|
|
message( WARNING "Use of HDF5 is enabled, but no HDF5 is found." )
|
|
endif() # HDF5_FOUND
|
|
endif() # MSVC
|
|
endif() # RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING
|
|
|
|
|
|
################################################################################
|
|
# Subset of Boost, used by NRLib and flow diagnostics application
|
|
################################################################################
|
|
|
|
if(MSVC)
|
|
# stop MSVC from trying to auto-link libs
|
|
add_definitions("-DBOOST_ALL_NO_LIB")
|
|
endif()
|
|
|
|
add_subdirectory(ThirdParty/boost-Subset)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
boost-Subset
|
|
)
|
|
|
|
################################################################################
|
|
# Opm
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/custom-opm-flowdiagnostics)
|
|
add_subdirectory(ThirdParty/custom-opm-flowdiag-app)
|
|
|
|
list(APPEND OPM_LIBRARIES
|
|
custom-opm-flowdiagnostics
|
|
custom-opm-flowdiag-app
|
|
)
|
|
|
|
set_property(TARGET
|
|
${OPM_LIBRARIES}
|
|
PROPERTY FOLDER "Thirdparty/OPM"
|
|
)
|
|
|
|
################################################################################
|
|
# NRLib
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/NRLib)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
NRLib
|
|
)
|
|
|
|
################################################################################
|
|
# Qt
|
|
################################################################################
|
|
option(RESINSIGHT_BUILD_WITH_QT5 "Use Qt5" OFF)
|
|
|
|
if (RESINSIGHT_BUILD_WITH_QT5)
|
|
find_package(Qt5 COMPONENTS REQUIRED Core Gui OpenGL Network Script ScriptTools Widgets)
|
|
else()
|
|
find_package(Qt4 COMPONENTS QtCore QtGui QtMain QtOpenGl QtNetwork QtScript QtScriptTools REQUIRED)
|
|
endif(RESINSIGHT_BUILD_WITH_QT5)
|
|
|
|
# Open GL
|
|
find_package( OpenGL )
|
|
|
|
################################################################################
|
|
# Qwt
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/Qwt/src)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
Qwt
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# Nightcharts
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/nightcharts)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
nightcharts
|
|
)
|
|
|
|
################################################################################
|
|
# C++ Mathematical Expression Parsing And Evaluation Library
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/expressionparser)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
expressionparser
|
|
)
|
|
|
|
################################################################################
|
|
# Eigen
|
|
################################################################################
|
|
include_directories(SYSTEM ThirdParty/Eigen-Subset)
|
|
|
|
################################################################################
|
|
# clipper
|
|
################################################################################
|
|
|
|
add_subdirectory(ThirdParty/clipper)
|
|
|
|
list(APPEND THIRD_PARTY_LIBRARIES
|
|
clipper
|
|
)
|
|
|
|
################################################################################
|
|
# Thirdparty libraries are put in ThirdParty solution folder
|
|
################################################################################
|
|
set_property(TARGET
|
|
${THIRD_PARTY_LIBRARIES}
|
|
PROPERTY FOLDER "Thirdparty"
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# App and Viz Framework Qt5 setting
|
|
################################################################################
|
|
if (RESINSIGHT_BUILD_WITH_QT5)
|
|
set(CEE_USE_QT5 ON)
|
|
endif(RESINSIGHT_BUILD_WITH_QT5)
|
|
|
|
|
|
################################################################################
|
|
# Vizualization Framework
|
|
################################################################################
|
|
|
|
# Allow use of non-threadsafe reference counter in cvf::Object on systems with no atomics support
|
|
if (CMAKE_COMPILER_IS_GNUCC)
|
|
|
|
if (NOT DEFINED HAVE_GCC_SYNC_FUNCTIONS)
|
|
check_c_source_compiles("int main(int argc, char **argv) {
|
|
int a;
|
|
__sync_add_and_fetch(&a, 1);
|
|
__sync_fetch_and_add(&a, 1);
|
|
__sync_sub_and_fetch(&a, 1);
|
|
__sync_fetch_and_sub(&a, 1); }" HAVE_GCC_SYNC_FUNCTIONS)
|
|
endif()
|
|
|
|
if (HAVE_GCC_SYNC_FUNCTIONS)
|
|
message(STATUS "GCC synchronization functions detected")
|
|
else()
|
|
message(STATUS "GCC synchronization functions NOT detected, fallback to non threadsafe reference counting")
|
|
add_definitions(-DCVF_USE_NON_THREADSAFE_REFERENCE_COUNT)
|
|
endif()
|
|
|
|
endif()
|
|
|
|
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibCore)
|
|
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibGeometry)
|
|
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibRender)
|
|
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibViewing)
|
|
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibGuiQt)
|
|
|
|
list(APPEND VIZ_FWK_LIBRARIES
|
|
LibGuiQt
|
|
LibViewing
|
|
LibRender
|
|
LibGeometry
|
|
LibCore
|
|
)
|
|
|
|
set_property(TARGET
|
|
${VIZ_FWK_LIBRARIES}
|
|
PROPERTY FOLDER "VizFwk"
|
|
)
|
|
|
|
|
|
################################################################################
|
|
# Application Framework
|
|
################################################################################
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafAnimControl)
|
|
add_subdirectory(Fwk/AppFwk/cafViewer)
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmCore)
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore)
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmXml)
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel)
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafCommand)
|
|
add_subdirectory(Fwk/AppFwk/cafUserInterface)
|
|
add_subdirectory(Fwk/AppFwk/cafPdmCvf)
|
|
add_subdirectory(Fwk/AppFwk/CommonCode)
|
|
add_subdirectory(Fwk/AppFwk/cafVizExtensions)
|
|
|
|
#add_subdirectory(Fwk/AppFwk/cafTests/cafTestCvfApplication)
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafTensor)
|
|
|
|
list(APPEND APP_FWK_LIBRARIES
|
|
cafPdmCore
|
|
cafPdmUiCore
|
|
cafPdmXml
|
|
cafProjectDataModel
|
|
|
|
cafUserInterface
|
|
cafViewer
|
|
cafAnimControl
|
|
cafCommand
|
|
cafPdmCvf
|
|
|
|
cafTensor
|
|
CommonCode
|
|
cafVizExtensions
|
|
)
|
|
|
|
set_property(TARGET
|
|
${APP_FWK_LIBRARIES}
|
|
PROPERTY FOLDER "AppFwk"
|
|
)
|
|
|
|
option (RESINSIGHT_INCLUDE_APPFWK_TESTS "Enable AppFwk Tests" OFF)
|
|
if (RESINSIGHT_INCLUDE_APPFWK_TESTS)
|
|
# Unit Tests
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafProjectDataModel_UnitTests)
|
|
set_property(TARGET cafProjectDataModel_UnitTests PROPERTY FOLDER "AppFwkTests")
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests)
|
|
set_property(TARGET cafPdmCore_UnitTests PROPERTY FOLDER "AppFwkTests")
|
|
|
|
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests)
|
|
set_property(TARGET cafPdmXml_UnitTests PROPERTY FOLDER "AppFwkTests")
|
|
|
|
# Executables
|
|
add_subdirectory(Fwk/AppFwk/cafTests/cafTestApplication)
|
|
set_property(TARGET cafTestApplication PROPERTY FOLDER "AppFwkTests")
|
|
endif()
|
|
|
|
|
|
|
|
################################################################################
|
|
# Installation settings
|
|
################################################################################
|
|
|
|
set (RESINSIGHT_INSTALL_FOLDER ".")
|
|
|
|
# override system install prefix if private installation chosen
|
|
option (RESINSIGHT_PRIVATE_INSTALL "Linux only: Install the libecl shared libraries along the executable" ON)
|
|
mark_as_advanced(FORCE RESINSIGHT_PRIVATE_INSTALL)
|
|
|
|
if (RESINSIGHT_PRIVATE_INSTALL)
|
|
set (CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/Install/)
|
|
|
|
################################################################################
|
|
# ERT shared library files
|
|
# Install procedure will copy so-files from ERT into same install folder as ResInsight
|
|
################################################################################
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set(ERT_SHARED_LIB_FILES
|
|
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so
|
|
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2
|
|
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2.4
|
|
)
|
|
|
|
install(FILES ${ERT_SHARED_LIB_FILES} DESTINATION ${RESINSIGHT_INSTALL_FOLDER} )
|
|
endif()
|
|
|
|
endif (RESINSIGHT_PRIVATE_INSTALL)
|
|
|
|
if (RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
foreach (FILE_TO_COPY ${HDF5_LIBRARIES})
|
|
|
|
# find all files containing the string "hdf"
|
|
STRING( FIND ${FILE_TO_COPY} "hdf5" POS_IN_STRING )
|
|
if(${POS_IN_STRING} GREATER -1)
|
|
get_filename_component(ABS_DIR ${FILE_TO_COPY} REALPATH)
|
|
message (STATUS "HDF5 bundle file - ${ABS_DIR}")
|
|
|
|
# as part of install, rename file with the extension ResInsight reports when running "ldd"
|
|
get_filename_component(FILE_NAME_WE ${FILE_TO_COPY} NAME_WE)
|
|
set(FILE_NAME_FOR_INSTALL "${FILE_NAME_WE}.so.6")
|
|
message (STATUS "HDF5 file FILE_NAME_FOR_INSTALL - ${FILE_NAME_FOR_INSTALL}")
|
|
|
|
install(FILES ${ABS_DIR} DESTINATION ${RESINSIGHT_INSTALL_FOLDER} RENAME ${FILE_NAME_FOR_INSTALL} )
|
|
endif()
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
endif (RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
|
|
|
|
|
|
################################################################################
|
|
# Application
|
|
################################################################################
|
|
add_subdirectory(ApplicationCode)
|
|
|
|
if (OCTAVE_MKOCTFILE)
|
|
message (STATUS "Adding OctavePlugin library")
|
|
|
|
add_subdirectory(OctavePlugin)
|
|
else (OCTAVE_MKOCTFILE)
|
|
message (STATUS "Could not find OCTAVE_MKOCTFILE, skipping OctavePlugin library")
|
|
endif(OCTAVE_MKOCTFILE)
|
|
|
|
################################################################################
|
|
# Code documentation using Doxygen
|
|
################################################################################
|
|
option(RESINSIGHT_BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF)
|
|
if(RESINSIGHT_BUILD_DOCUMENTATION)
|
|
FIND_PACKAGE(Doxygen)
|
|
if (NOT DOXYGEN_FOUND)
|
|
message(FATAL_ERROR
|
|
"Doxygen is needed to build the documentation. Please install it correctly")
|
|
endif()
|
|
#-- Configure the Template Doxyfile for our specific project
|
|
configure_file(Doxyfile.in
|
|
${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
|
|
#-- Add a custom target to run Doxygen when ever the project is built
|
|
add_custom_target (Docs
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
|
|
SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
|
|
# IF you do NOT want the documentation to be generated EVERY time you build the project
|
|
# then leave out the 'ALL' keyword from the above command.
|
|
endif(RESINSIGHT_BUILD_DOCUMENTATION)
|
|
|