mirror of
https://github.com/OPM/ResInsight.git
synced 2025-01-05 21:53:27 -06:00
695 lines
24 KiB
CMake
695 lines
24 KiB
CMake
cmake_minimum_required (VERSION 2.8.12)
|
|
|
|
project (ApplicationCode)
|
|
|
|
# Open GL
|
|
find_package( OpenGL )
|
|
|
|
if (RESINSIGHT_BUILD_WITH_QT5)
|
|
find_package(Qt5 COMPONENTS Core QUIET)
|
|
endif(RESINSIGHT_BUILD_WITH_QT5)
|
|
|
|
if (Qt5Core_FOUND)
|
|
find_package(Qt5 CONFIG REQUIRED Core Gui OpenGL Network Script Widgets)
|
|
set(QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Script Qt5::Widgets)
|
|
else()
|
|
set (QT_COMPONENTS_REQUIRED QtCore QtGui QtMain QtOpenGl QtNetwork QtScript)
|
|
find_package(Qt4 COMPONENTS ${QT_COMPONENTS_REQUIRED} REQUIRED)
|
|
include(${QT_USE_FILE})
|
|
endif(Qt5Core_FOUND)
|
|
|
|
# NB: The generated file is written to Cmake binary folder to avoid source tree pollution
|
|
# This folder is added to include_directories
|
|
CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/ApplicationCode/Adm/RiaVersionInfo.h.cmake
|
|
${CMAKE_BINARY_DIR}/Generated/RiaVersionInfo.h
|
|
)
|
|
|
|
if (MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.11))
|
|
# VS 2017 : Disable warnings from from gtest code, using deprecated code related to TR1
|
|
add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
|
|
message("Add flag to disable warings from gtest - _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
|
|
endif()
|
|
|
|
include_directories(
|
|
|
|
# required for compilation of gtest, should be refactored
|
|
${ResInsight_SOURCE_DIR}/ThirdParty
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Application
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Application/Tools
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Application/Tools/WellPathTools
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Commands
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Commands/EclipseCommands
|
|
${CMAKE_CURRENT_SOURCE_DIR}/FileInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/SocketInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Measurement
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization/GridBox
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization/Intersections
|
|
${CMAKE_CURRENT_SOURCE_DIR}/UserInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/CommandFileInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/CommandFileInterface/Core
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Annotations
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Completions
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Flow
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/GridCrossPlots
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Measurement
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Summary
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ResultStatisticsCache
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel/Completions
|
|
${CMAKE_CURRENT_SOURCE_DIR}/WellPathImportSsihub
|
|
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/OdbReader
|
|
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechDataModel
|
|
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechVisualization
|
|
|
|
${CMAKE_BINARY_DIR}/Generated
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
)
|
|
|
|
#############################################################################
|
|
# Defining all the source (and header) files
|
|
#############################################################################
|
|
|
|
# Use all h files in the subdirectories to make them available in the project
|
|
file( GLOB_RECURSE HEADER_FILES *.h )
|
|
|
|
set( SOCKET_INTERFACE_FILES
|
|
SocketInterface/RiaSocketServer.cpp
|
|
SocketInterface/RiaProjectInfoCommands.cpp
|
|
SocketInterface/RiaCaseInfoCommands.cpp
|
|
SocketInterface/RiaGeometryCommands.cpp
|
|
SocketInterface/RiaNNCCommands.cpp
|
|
SocketInterface/RiaPropertyDataCommands.cpp
|
|
SocketInterface/RiaWellDataCommands.cpp
|
|
SocketInterface/RiaSocketTools.cpp
|
|
SocketInterface/RiaSocketDataTransfer.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
${SOCKET_INTERFACE_FILES}
|
|
${UNIT_TEST_FILES}
|
|
)
|
|
|
|
list( APPEND REFERENCED_CMAKE_FILES
|
|
Application/CMakeLists_files.cmake
|
|
Application/Tools/CMakeLists_files.cmake
|
|
Application/Tools/WellPathTools/CMakeLists_files.cmake
|
|
|
|
ReservoirDataModel/CMakeLists_files.cmake
|
|
ReservoirDataModel/CMakeLists_filesNotToUnitTest.cmake
|
|
ReservoirDataModel/Completions/CMakeLists_files.cmake
|
|
FileInterface/CMakeLists_files.cmake
|
|
|
|
ProjectDataModel/CMakeLists_files.cmake
|
|
ProjectDataModel/GridCrossPlots/CMakeLists_files.cmake
|
|
ProjectDataModel/GridCrossPlots/CellFilters/CMakeLists_files.cmake
|
|
ProjectDataModel/Summary/CMakeLists_files.cmake
|
|
ProjectDataModel/Flow/CMakeLists_files.cmake
|
|
ProjectDataModel/Annotations/CMakeLists_files.cmake
|
|
ProjectDataModel/Completions/CMakeLists_files.cmake
|
|
ProjectDataModel/Measurement/CMakeLists_files.cmake
|
|
|
|
GeoMech/GeoMechVisualization/CMakeLists_files.cmake
|
|
|
|
ModelVisualization/CMakeLists_files.cmake
|
|
ModelVisualization/GridBox/CMakeLists_files.cmake
|
|
ModelVisualization/Intersections/CMakeLists_files.cmake
|
|
ModelVisualization/WindowEdgeAxesOverlayItem/CMakeLists_files.cmake
|
|
|
|
UserInterface/CMakeLists_files.cmake
|
|
|
|
Commands/CMakeLists_files.cmake
|
|
Commands/ApplicationCommands/CMakeLists_files.cmake
|
|
Commands/AnnotationCommands/CMakeLists_files.cmake
|
|
Commands/CompletionCommands/CMakeLists_files.cmake
|
|
Commands/CompletionExportCommands/CMakeLists_files.cmake
|
|
Commands/CrossSectionCommands/CMakeLists_files.cmake
|
|
Commands/EclipseCommands/CMakeLists_files.cmake
|
|
Commands/EclipseCommands/EclipseWell/CMakeLists_files.cmake
|
|
Commands/ExportCommands/CMakeLists_files.cmake
|
|
Commands/FlowCommands/CMakeLists_files.cmake
|
|
Commands/GridCrossPlotCommands/CMakeLists_files.cmake
|
|
Commands/HoloLensCommands/CMakeLists_files.cmake
|
|
Commands/IntersectionBoxCommands/CMakeLists_files.cmake
|
|
Commands/IntersectionViewCommands/CMakeLists_files.cmake
|
|
Commands/MeasurementCommands/CMakeLists_files.cmake
|
|
Commands/OctaveScriptCommands/CMakeLists_files.cmake
|
|
Commands/OperationsUsingObjReferences/CMakeLists_files.cmake
|
|
Commands/SummaryPlotCommands/CMakeLists_files.cmake
|
|
Commands/ToggleCommands/CMakeLists_files.cmake
|
|
Commands/ViewLink/CMakeLists_files.cmake
|
|
Commands/WellLogCommands/CMakeLists_files.cmake
|
|
Commands/WellPathCommands/CMakeLists_files.cmake
|
|
|
|
CommandFileInterface/CMakeLists_files.cmake
|
|
CommandFileInterface/Core/CMakeLists_files.cmake
|
|
Commands/FractureCommands/CMakeLists_files.cmake
|
|
)
|
|
|
|
option (RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS "Include ApplicationCode Unit Tests" OFF)
|
|
if (RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS)
|
|
add_definitions(-DUSE_UNIT_TESTS)
|
|
|
|
list( APPEND REFERENCED_CMAKE_FILES
|
|
UnitTests/CMakeLists_files.cmake
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
# Include source file lists from *.cmake files
|
|
foreach (referencedfile ${REFERENCED_CMAKE_FILES})
|
|
include (${referencedfile})
|
|
endforeach (referencedfile)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
${CODE_SOURCE_FILES}
|
|
)
|
|
|
|
#############################################################################
|
|
# Sub-directory projects
|
|
#############################################################################
|
|
|
|
add_subdirectory(WellPathImportSsihub)
|
|
add_subdirectory(ResultStatisticsCache)
|
|
|
|
set( RI_LIBRARIES
|
|
WellPathImportSsihub
|
|
ResultStatisticsCache
|
|
)
|
|
|
|
#
|
|
# Odb api
|
|
#
|
|
set(RESINSIGHT_ODB_API_DIR "" CACHE PATH "Optional path to the ABAQUS ODB API from Simulia. Needed for support of geomechanical models")
|
|
if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
|
|
add_definitions(-DUSE_ODB_API)
|
|
add_subdirectory(GeoMech/OdbReader)
|
|
SET(RESINSIGHT_USE_ODB_API 1)
|
|
MESSAGE( STATUS "Using ODB-Api from : ${RESINSIGHT_ODB_API_DIR}" )
|
|
endif()
|
|
|
|
add_subdirectory(GeoMech/GeoMechDataModel)
|
|
list( APPEND RI_LIBRARIES
|
|
RigGeoMechDataModel
|
|
)
|
|
|
|
if (RESINSIGHT_USE_ODB_API)
|
|
list( APPEND RI_LIBRARIES
|
|
RifOdbReader
|
|
)
|
|
endif()
|
|
|
|
|
|
#
|
|
# HDF5
|
|
#
|
|
if (RESINSIGHT_FOUND_HDF5)
|
|
list( APPEND CPP_SOURCES
|
|
FileInterface/RifHdf5Reader.h
|
|
FileInterface/RifHdf5Reader.cpp
|
|
)
|
|
|
|
source_group( "FileInterface" FILES FileInterface/RifHdf5Reader.h FileInterface/RifHdf5Reader.cpp )
|
|
|
|
add_definitions(-DUSE_HDF5)
|
|
endif()
|
|
|
|
if (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING)
|
|
add_definitions(-DENABLE_SOURING)
|
|
endif()
|
|
|
|
|
|
#############################################################################
|
|
# Qt specifics: Moc, ui, resources
|
|
#############################################################################
|
|
|
|
set ( QT_MOC_HEADERS
|
|
${QT_MOC_HEADERS}
|
|
|
|
ProjectDataModel/RimMimeData.h
|
|
ProjectDataModel/RimIntersectionBox.h
|
|
|
|
SocketInterface/RiaSocketServer.h
|
|
)
|
|
|
|
if (Qt5Core_FOUND)
|
|
qt5_wrap_cpp(MOC_SOURCE_FILES ${QT_MOC_HEADERS} )
|
|
qt5_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} )
|
|
else()
|
|
qt4_wrap_cpp(MOC_SOURCE_FILES ${QT_MOC_HEADERS} )
|
|
qt4_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} )
|
|
endif()
|
|
|
|
|
|
# NOTE! Resources in subfolders must append to QRC_FILES using the following statement
|
|
# set( QRC_FILES
|
|
# ${QRC_FILES}
|
|
# ${CMAKE_CURRENT_SOURCE_DIR}/Resources/myLibrary.qrc
|
|
# PARENT_SCOPE
|
|
# )
|
|
|
|
set( QRC_FILES
|
|
${QRC_FILES}
|
|
Resources/ResInsight.qrc
|
|
)
|
|
|
|
# Runs RCC on specified files
|
|
if ( NOT CMAKE_AUTOMOC)
|
|
if (Qt5Core_FOUND)
|
|
qt5_add_resources( QRC_FILES_CPP
|
|
${QRC_FILES}
|
|
)
|
|
else()
|
|
qt4_add_resources( QRC_FILES_CPP
|
|
${QRC_FILES}
|
|
)
|
|
endif(Qt5Core_FOUND)
|
|
endif(NOT CMAKE_AUTOMOC)
|
|
|
|
# Adding resource (RC) files for Windows
|
|
if ( MSVC )
|
|
set( WIN_RESOURCE Resources/ResInsight.rc )
|
|
endif()
|
|
|
|
|
|
################################################################################
|
|
# Create source groups - see also included CMakeLists_files.cmake
|
|
################################################################################
|
|
source_group( "ModelVisualization" FILES ${MODEL_VISUALIZATION_FILES} )
|
|
source_group( "SocketInterface" FILES ${SOCKET_INTERFACE_FILES} )
|
|
source_group( "UnitTests" FILES ${UNIT_TEST_FILES} )
|
|
|
|
|
|
#############################################################################
|
|
# Set up the main executable with its source files
|
|
#############################################################################
|
|
|
|
# Default behaviour for a Qt application is a console application, resulting in a console window always being launced at startup
|
|
# The following statement is used to control this behaviour
|
|
# set_target_properties( MY_TARGET PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS")
|
|
# This setting i not honored by Cmake - http://public.kitware.com/Bug/view.php?id=14326
|
|
# We use the following workaround described in the bug report
|
|
# ADD_EXECUTABLE(${TARGET_NAME} WIN32 ${SRC})
|
|
# See CMake symbol WIN32_EXECUTABLE for details
|
|
|
|
if (MSVC)
|
|
set( EXE_FILES WIN32)
|
|
elseif (APPLE)
|
|
set( EXE_FILES MACOSX_BUNDLE)
|
|
endif()
|
|
set( EXE_FILES
|
|
${EXE_FILES}
|
|
${CPP_SOURCES}
|
|
${MOC_SOURCE_FILES}
|
|
${FORM_FILES_CPP}
|
|
${QRC_FILES_CPP}
|
|
${WIN_RESOURCE}
|
|
${HEADER_FILES}
|
|
${REFERENCED_CMAKE_FILES}
|
|
../ResInsightVersion.cmake
|
|
../.clang-format
|
|
../.clang-tidy
|
|
)
|
|
|
|
add_executable( ResInsight ${EXE_FILES} )
|
|
|
|
if (MSVC)
|
|
# The following warnings are supposed to be used in ResInsight, but temporarily disabled to avoid too much noise
|
|
# warning C4245: 'return': conversion from 'int' to 'size_t', signed/unsigned mismatch
|
|
|
|
# If possible, the following command is supposed to be the final target
|
|
# set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/W4 /wd4190 /wd4100 /wd4127")
|
|
|
|
set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/W4 /wd4190 /wd4100 /wd4127 /wd4245")
|
|
if (CMAKE_CXX_COMPILER_VERSION LESS_EQUAL 19.14)
|
|
# The following warning is generated over 800 times from a qwt header only using VS2015
|
|
# Disabling temporarily
|
|
# warning C4505 'function' : unreferenced local function has been removed
|
|
set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/wd4505")
|
|
endif()
|
|
|
|
endif()
|
|
|
|
#############################################################################
|
|
# Application icon for MacOS X bundle
|
|
#############################################################################
|
|
|
|
if (APPLE)
|
|
add_custom_command (OUTPUT Resources/ResInsight.icns
|
|
COMMAND sips -s format icns ${CMAKE_CURRENT_SOURCE_DIR}/Resources/AppLogo48x48.png --out ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns
|
|
COMMENT Converting application icon
|
|
)
|
|
add_custom_target (ResInsight-icns
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns)
|
|
add_dependencies (ResInsight ResInsight-icns)
|
|
set_target_properties (ResInsight PROPERTIES
|
|
MACOSX_BUNDLE_ICON_FILE ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns)
|
|
endif ()
|
|
|
|
#############################################################################
|
|
# Set up libraries and dependent projects to link with
|
|
#############################################################################
|
|
|
|
set( LINK_LIBRARIES
|
|
${OPM_LIBRARIES}
|
|
|
|
${RI_LIBRARIES}
|
|
|
|
${APP_FWK_LIBRARIES}
|
|
${VIZ_FWK_LIBRARIES}
|
|
|
|
${THIRD_PARTY_LIBRARIES}
|
|
|
|
${OPENGL_LIBRARIES}
|
|
${QT_LIBRARIES}
|
|
)
|
|
|
|
# According to ivarun this is needed on OpenSuse, and Fedora. See: https://github.com/OPM/ResInsight/pull/7
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
list(APPEND EXTERNAL_LINK_LIBRARIES
|
|
rt
|
|
)
|
|
endif()
|
|
|
|
target_link_libraries( ResInsight ${LINK_LIBRARIES} ${EXTERNAL_LINK_LIBRARIES})
|
|
|
|
|
|
#############################################################################
|
|
# cotire
|
|
#############################################################################
|
|
if(RESINSIGHT_ENABLE_COTIRE)
|
|
|
|
set( COTIRE_EXCLUDE_FILES
|
|
# forever is used as variable name, and this symbol is defined by Qt and used in precompiled headers
|
|
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
|
|
|
# multiple QRC files are not supported
|
|
qrc_cafAnimControl.cxx
|
|
qrc_ResInsight.cxx
|
|
|
|
# mix of cvf and Qt namespaces
|
|
ModelVisualization/GridBox/RivGridBoxGenerator.cpp
|
|
ModelVisualization/Intersections/RivIntersectionGeometryGenerator.cpp
|
|
|
|
# exclude file using Eigen
|
|
ReservoirDataModel/RigCellGeometryTools.cpp
|
|
ReservoirDataModel/Completions/RigTransmissibilityCondenser.cpp
|
|
ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp
|
|
ReservoirDataModel/Completions/RigEclipseToStimPlanCalculator.cpp
|
|
|
|
# exclude file using SolveSpace
|
|
Application/Tools/WellPathTools/RiaSCurveCalculator.cpp
|
|
|
|
# QT 5
|
|
qrc_cafAnimControl.cpp
|
|
qrc_ResInsight.cpp
|
|
ProjectDataModel/RimContourMapView.cpp
|
|
Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp
|
|
)
|
|
|
|
foreach (fileToExclude ${COTIRE_EXCLUDE_FILES})
|
|
set_source_files_properties (${fileToExclude} PROPERTIES COTIRE_EXCLUDED TRUE)
|
|
endforeach(fileToExclude)
|
|
|
|
foreach (cppFile ${CAF_COTIRE_START_NEW_UNITY_SOURCES})
|
|
set_source_files_properties (${cppFile} PROPERTIES COTIRE_START_NEW_UNITY_SOURCE TRUE)
|
|
endforeach(cppFile ${CAF_COTIRE_START_NEW_UNITY_SOURCES})
|
|
|
|
# disable precompiled headers
|
|
set_target_properties(ResInsight PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE)
|
|
|
|
cotire(ResInsight)
|
|
|
|
# make sure the unity target is included in the active builds to trigger rebuild before debug
|
|
get_target_property(_unityTargetName ResInsight COTIRE_UNITY_TARGET_NAME)
|
|
set_target_properties(${_unityTargetName} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD FALSE)
|
|
set_target_properties(ResInsight PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
#############################################################################
|
|
# Copy Dlls on MSVC
|
|
#############################################################################
|
|
|
|
|
|
if (MSVC)
|
|
|
|
# Qt DLLs
|
|
if (Qt5Core_FOUND)
|
|
message(STATUS "Creating post build step for copying Qt DLLs")
|
|
foreach (qtlib ${QT_LIBRARIES})
|
|
add_custom_command(TARGET ResInsight POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${qtlib}> $<TARGET_FILE_DIR:ResInsight>
|
|
)
|
|
endforeach(qtlib)
|
|
else()
|
|
set (QTLIBLIST QtCore4 QtCored4 QtGui4 QtGuid4 QtOpenGl4 QtOpenGld4 QtNetwork4 QtNetworkd4 QtScript4 QtScriptd4 QtScriptTools4 QtScriptToolsd4)
|
|
foreach (qtlib ${QTLIBLIST})
|
|
list(APPEND RI_DLL_FILENAMES ${QT_BINARY_DIR}/${qtlib}.dll)
|
|
endforeach( qtlib )
|
|
endif()
|
|
# Odb Dlls
|
|
if (RESINSIGHT_USE_ODB_API)
|
|
# Find all the dlls
|
|
file (GLOB RI_ALL_ODB_DLLS ${RESINSIGHT_ODB_API_DIR}/lib/*.dll)
|
|
|
|
# Strip off the path
|
|
foreach (aDLL ${RI_ALL_ODB_DLLS})
|
|
get_filename_component(filenameWithExt ${aDLL} NAME)
|
|
list(APPEND RI_ODB_DLLS ${filenameWithExt} )
|
|
endforeach(aDLL)
|
|
|
|
foreach (aDLL ${RI_ODB_DLLS})
|
|
list(APPEND RI_DLL_FILENAMES ${RESINSIGHT_ODB_API_DIR}/lib/${aDLL})
|
|
endforeach()
|
|
endif()
|
|
|
|
# HDF5 Dlls
|
|
if (RESINSIGHT_FOUND_HDF5)
|
|
set (HDF5_DLL_NAMES hdf5 hdf5_cpp szip zlib)
|
|
foreach (HDF5_DLL_NAME ${HDF5_DLL_NAMES})
|
|
list(APPEND RI_DLL_FILENAMES ${RESINSIGHT_HDF5_DIR}/bin/${HDF5_DLL_NAME}.dll)
|
|
endforeach( HDF5_DLL_NAME )
|
|
endif()
|
|
|
|
endif(MSVC)
|
|
|
|
# Copy to target directory
|
|
foreach (FILE_TO_COPY ${RI_DLL_FILENAMES})
|
|
add_custom_command(TARGET ResInsight POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${FILE_TO_COPY}"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
|
|
if (_unityTargetName)
|
|
add_custom_command(TARGET ${_unityTargetName} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${FILE_TO_COPY}"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
|
|
endif()
|
|
endforeach()
|
|
|
|
|
|
#############################################################################
|
|
# Install
|
|
#############################################################################
|
|
|
|
set (RESINSIGHT_LICENSE_FILES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/LicenseInformation.txt
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/gplLicense.txt
|
|
)
|
|
|
|
# bundle libraries together with private installation
|
|
if (RESINSIGHT_PRIVATE_INSTALL)
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
# tell binary to first attempt to load libraries from its own directory
|
|
set(RESINSIGHT_INSTALL_RPATH "\$ORIGIN")
|
|
|
|
if (${RESINSIGHT_USE_ODB_API})
|
|
# This is a "hack" to make ResInsight runtime find the ODB so files used when compiling.
|
|
# statoil wanted it this way, but we should probbly make a different installoptions that does things this way,
|
|
# and really do copy them when doing PRIVATE_INSTALL
|
|
set(RESINSIGHT_INSTALL_RPATH ${RESINSIGHT_INSTALL_RPATH} ${RESINSIGHT_ODB_API_DIR}/lib)
|
|
endif()
|
|
|
|
if (EXISTS ${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT})
|
|
# append the external ERT lib root
|
|
set(RESINSIGHT_INSTALL_RPATH ${RESINSIGHT_INSTALL_RPATH} ${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT})
|
|
endif()
|
|
|
|
#message("RESINSIGHT_INSTALL_RPATH : " "${RESINSIGHT_INSTALL_RPATH}")
|
|
|
|
set_target_properties (ResInsight PROPERTIES INSTALL_RPATH "${RESINSIGHT_INSTALL_RPATH}")
|
|
|
|
endif()
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
# put a .exe.local file in the target directory to pick up DLLs from there
|
|
install (CODE "exec_program (\"${CMAKE_COMMAND}\" ARGS -E touch \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}ResInsight${CMAKE_EXECUTABLE_SUFFIX}.local)")
|
|
|
|
set (RESINSIGHT_FILES ${RI_DLL_FILENAMES})
|
|
|
|
if(Qt5_FOUND AND WIN32 AND TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt)
|
|
get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
|
|
|
|
execute_process(
|
|
COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
|
|
RESULT_VARIABLE return_code
|
|
OUTPUT_VARIABLE qt5_install_prefix
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe")
|
|
|
|
if(EXISTS ${imported_location})
|
|
add_executable(Qt5::windeployqt IMPORTED)
|
|
|
|
set_target_properties(Qt5::windeployqt PROPERTIES
|
|
IMPORTED_LOCATION ${imported_location}
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# TODO(wjwwood): find a way to make this optional or to run without "deploying" the
|
|
# necessary dlls and stuff to the bin folder.
|
|
# see:
|
|
# https://stackoverflow.com/questions/41193584/deploy-all-qt-dependencies-when-building#41199492
|
|
if(TARGET Qt5::windeployqt)
|
|
# execute windeployqt in a tmp directory after build
|
|
add_custom_command(TARGET ResInsight
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/windeployqt"
|
|
COMMAND set PATH=%PATH%$<SEMICOLON>${qt5_install_prefix}/bin
|
|
COMMAND
|
|
Qt5::windeployqt
|
|
--no-compiler-runtime
|
|
--no-system-d3d-compiler
|
|
--no-quick-import
|
|
--no-translations
|
|
--verbose 0
|
|
--dir "${CMAKE_CURRENT_BINARY_DIR}/windeployqt"
|
|
"$<TARGET_FILE_DIR:ResInsight>/$<TARGET_FILE_NAME:ResInsight>"
|
|
)
|
|
|
|
# copy deployment directory during installation
|
|
install(
|
|
DIRECTORY
|
|
"${CMAKE_CURRENT_BINARY_DIR}/windeployqt/"
|
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}
|
|
)
|
|
endif()
|
|
|
|
# CRT
|
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON)
|
|
set(CMAKE_INSTALL_OPENMP_LIBRARIES ON)
|
|
include(InstallRequiredSystemLibraries)
|
|
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
|
|
|
endif()
|
|
|
|
set (RESINSIGHT_FILES ${RESINSIGHT_FILES} ${RESINSIGHT_LICENSE_FILES})
|
|
|
|
|
|
install(TARGETS ResInsight DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
|
|
|
install(FILES ${RESINSIGHT_FILES} DESTINATION ${RESINSIGHT_INSTALL_FOLDER} )
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resinsight DESTINATION ${RESINSIGHT_INSTALL_FOLDER} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )
|
|
endif()
|
|
|
|
else (RESINSIGHT_PRIVATE_INSTALL)
|
|
# binaries go in /usr/bin
|
|
install (TARGETS ResInsight
|
|
DESTINATION bin
|
|
)
|
|
# license go in /usr/share/doc
|
|
install (FILES ${RESINSIGHT_LICENSE_FILES}
|
|
DESTINATION share/doc/ResInsight
|
|
)
|
|
# no bundled libraries for system install
|
|
# application icon
|
|
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/AppLogo48x48.png
|
|
DESTINATION share/icons/hicolor/48x48/apps
|
|
RENAME ResInsight.png
|
|
)
|
|
# desktop environment icon; remember to call `update-desktop-database`
|
|
# in package post-install scripts
|
|
configure_file (
|
|
${CMAKE_CURRENT_SOURCE_DIR}/resinsight.desktop.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/resinsight.desktop
|
|
@ONLY
|
|
)
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/resinsight.desktop
|
|
DESTINATION share/applications
|
|
)
|
|
endif (RESINSIGHT_PRIVATE_INSTALL)
|
|
|
|
|
|
################################################################################
|
|
# Installation packaging
|
|
################################################################################
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set(CPACK_GENERATOR TGZ)
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
set(CPACK_GENERATOR ZIP)
|
|
endif()
|
|
|
|
|
|
# Handling of system name on Windows
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES Windows)
|
|
if(CMAKE_CL_64)
|
|
set(CPACK_SYSTEM_NAME win64)
|
|
else()
|
|
set(CPACK_SYSTEM_NAME win32)
|
|
endif()
|
|
endif()
|
|
|
|
# Append el5 when compiled on RHEL5 and el6 if compiled on RHEL6
|
|
string(REGEX MATCH "el[5,6]?" RESINSIGHT_RHEL_SYSTEM_NAME ${CMAKE_SYSTEM})
|
|
|
|
|
|
set(RESINSIGHT_PACKAGE_NAME "ResInsight")
|
|
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}-${STRPRODUCTVER}")
|
|
|
|
if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_odb")
|
|
endif()
|
|
|
|
if(NOT ${OCTAVE_VERSION_STRING} EQUAL "")
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_oct-${OCTAVE_VERSION_STRING}")
|
|
endif()
|
|
|
|
if(RESINSIGHT_FOUND_HDF5)
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_souring")
|
|
endif()
|
|
|
|
# Append el5 when compiled on RHEL5 and el6 if compiled on RHEL6
|
|
if (NOT "${RESINSIGHT_RHEL_SYSTEM_NAME}" STREQUAL "")
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_${RESINSIGHT_RHEL_SYSTEM_NAME}")
|
|
else()
|
|
set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_${CPACK_SYSTEM_NAME}")
|
|
endif()
|
|
|
|
#message("RESINSIGHT_PACKAGE_NAME : " ${RESINSIGHT_PACKAGE_NAME})
|
|
set(CPACK_PACKAGE_FILE_NAME ${RESINSIGHT_PACKAGE_NAME})
|
|
|
|
|
|
include (CPack)
|