https://github.com/CoolProp/CoolProp
Tip revision: 59000f803558451116757d5e7f953574add34315 authored by Jorrit Wronski on 22 May 2018, 20:53:23 UTC
Checkpoint
Checkpoint
Tip revision: 59000f8
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
set(COOLPROP_DEBUG_CMAKE ON)
#######################################
# PROJECT INFORMATION #
#-------------------------------------#
# This CMakeLists.txt file is for the #
# CoolProp thermodynamic library. #
#######################################
project("CoolProp" VERSION 6.1.1)
set(COOLPROP_VERSION ${PROJECT_VERSION})
string(REPLACE "." ";" COOLPROP_VERSION_LIST ${PROJECT_VERSION})
list(GET COOLPROP_VERSION_LIST 0 COOLPROP_VERSION_MAJOR)
list(GET COOLPROP_VERSION_LIST 1 COOLPROP_VERSION_MINOR)
list(GET COOLPROP_VERSION_LIST 2 COOLPROP_VERSION_PATCH)
set(COOLPROP_SOURCES_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
string(TIMESTAMP COOLPROP_CONFIGURE_TIMESTAMP "%Y-%m-%d %H:%M:%S")
#######################################
# FIND ALL SOURCES #
#-------------------------------------#
# The project is organised with split #
# includes and source folders, which #
# makes it easier for developers to #
# quickly find relevant files. This #
# section finds all sources, headers #
# and corresponding directories. #
#######################################
# Get everything in the src/ directory (always), but not recursive
file(GLOB COOLPROP_MAIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
file(GLOB COOLPROP_MAIN_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
# These backends will be compiled in
set(COOLPROP_ENABLED_BACKENDS Cubics IF97 Helmholtz REFPROP Incompressible Tabular)
foreach (backend ${COOLPROP_ENABLED_BACKENDS})
file(GLOB_RECURSE COOLPROP_BACKEND_SOURCES_TMP "${CMAKE_CURRENT_SOURCE_DIR}/src/Backends/${backend}/*.cpp")
file(GLOB_RECURSE COOLPROP_BACKEND_HEADERS_TMP "${CMAKE_CURRENT_SOURCE_DIR}/src/Backends/${backend}/*.h")
list(APPEND COOLPROP_BACKEND_SOURCES ${COOLPROP_BACKEND_SOURCES_TMP})
list(APPEND COOLPROP_BACKEND_HEADERS ${COOLPROP_BACKEND_HEADERS_TMP})
endforeach()
# Create source groups, mainly for Visual Studio
source_group("General Sources" FILES ${COOLPROP_MAIN_SOURCES})
source_group("General Headers" FILES ${COOLPROP_MAIN_HEADERS})
source_group("Backend Sources" FILES ${COOLPROP_BACKEND_SOURCES})
source_group("Backend Headers" FILES ${COOLPROP_BACKEND_HEADERS})
#######################################
# SET DEPENDENCIES #
#-------------------------------------#
# We make use of a number of other #
# libraries for various purposes. #
#######################################
# Add external dependencies, provide hunter-based alternative later
set(APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/Eigen")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/msgpack-c/include")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/cppformat")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/externals/Catch/single_include")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include")
list(APPEND APP_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
include_directories(${APP_INCLUDE_DIRS})
# Add CMake dependencies
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") #https://github.com/rpavlik/cmake-modules
# Generate the header files
add_custom_target(generate_version_headers
COMMAND ${CMAKE_COMMAND}
-DCOOLPROP_DEBUG_CMAKE="${COOLPROP_DEBUG_CMAKE}"
-DCOOLPROP_SOURCES_ROOT="${COOLPROP_SOURCES_ROOT}"
-DCOOLPROP_VERSION="${COOLPROP_VERSION}"
-DCOOLPROP_INPUT_FILE=\"${COOLPROP_SOURCES_ROOT}/dev/cmake/cpversion.h.in\"
-DCOOLPROP_OUTPUT_FILE="${COOLPROP_SOURCES_ROOT}/include/cpversion.h"
-P "${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/generate_version_headers.cmake"
COMMENT "Generating ${COOLPROP_SOURCES_ROOT}/include/cpversion.h"
)
add_custom_target(generate_fluid_headers
COMMAND ${CMAKE_COMMAND}
-DCOOLPROP_DEBUG_CMAKE="${COOLPROP_DEBUG_CMAKE}"
-DCOOLPROP_SOURCES_ROOT="${COOLPROP_SOURCES_ROOT}"
-P "${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/generate_fluid_headers.cmake"
COMMENT "Generating fluid headers from ${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/generate_fluid_headers.cmake"
)
add_custom_target(generate_headers
DEPENDS generate_version_headers generate_fluid_headers
)
#######################################
# CREATE DEFAULT TARGETS #
#-------------------------------------#
# All targets should be placed in #
# subdirectories and they should also #
# have unique names. However, we can #
# define default targets here that #
# contains the commons sources for #
# all flavours of CoolProp to #
# simplify integration. #
#######################################
# Use this target with a generator expression, if you do not need to modify the compiler settings.
add_library(coolprop_object_library OBJECT ${COOLPROP_MAIN_SOURCES} ${COOLPROP_BACKEND_SOURCES} ${COOLPROP_MAIN_HEADERS} ${COOLPROP_BACKEND_HEADERS})
add_dependencies(coolprop_object_library generate_headers)
# Manually inlcude these variables in your CMakeLists.txt, if you have to rely on custom compiler settings.
set(COOLPROP_OBJECT_DEPENDS generate_headers)
set(COOLPROP_OBJECT_SOURCES $<TARGET_PROPERTY:coolprop_object_library,SOURCES>)
set(COOLPROP_OBJECT_INCLUDES $<TARGET_PROPERTY:coolprop_object_library,INCLUDE_DIRECTORIES>)
#######################################
# ADD WRAPPER TARGETS #
#-------------------------------------#
# Add the CMakeLists.txt files for #
# wrappers. These subprojects may #
# include additional source files and #
# dependencies not listed here. #
#######################################
add_subdirectory(wrappers/library)
add_subdirectory(wrappers/ees)