mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
libQtCore often, but not always includes the required functionality from libz. This is needed for example on openSUSE 12.1 and 12.2.
343 lines
11 KiB
CMake
343 lines
11 KiB
CMake
cmake_minimum_required (VERSION 2.8)
|
|
|
|
project (ApplicationCode)
|
|
|
|
# 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/RIVersionInfo.h.cmake
|
|
${CMAKE_BINARY_DIR}/Generated/RIVersionInfo.h
|
|
)
|
|
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set ( ERT_ROOT "Ert" )
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
set ( ERT_ROOT "Ert-windows" )
|
|
endif()
|
|
|
|
|
|
include_directories(
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Application
|
|
${CMAKE_CURRENT_SOURCE_DIR}/FileInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/SocketInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization
|
|
${CMAKE_CURRENT_SOURCE_DIR}/UserInterface
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/${ERT_ROOT}/ecl/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/${ERT_ROOT}/util/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/${ERT_ROOT}/geometry/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/${ERT_ROOT}/well/include
|
|
|
|
${CMAKE_BINARY_DIR}/Generated
|
|
)
|
|
|
|
|
|
# Use all cpp and h files in the subdirectories
|
|
file( GLOB_RECURSE HEADER_FILES *.h )
|
|
|
|
list( APPEND CPP_SOURCES
|
|
RIMain.cpp
|
|
RIStdInclude.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
Application/RIApplication.cpp
|
|
Application/RIPreferences.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
ModelVisualization/RivCellEdgeEffectGenerator.cpp
|
|
ModelVisualization/RivGridPartMgr.cpp
|
|
ModelVisualization/RivReservoirPartMgr.cpp
|
|
ModelVisualization/RivReservoirViewPartMgr.cpp
|
|
ModelVisualization/RivPipeGeometryGenerator.cpp
|
|
ModelVisualization/RivReservoirPipesPartMgr.cpp
|
|
ModelVisualization/RivWellPipesPartMgr.cpp
|
|
ModelVisualization/RivWellHeadPartMgr.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
FileInterface/RifEclipseInputFileTools.cpp
|
|
FileInterface/RifEclipseOutputFileTools.cpp
|
|
FileInterface/RifEclipseRestartFilesetAccess.cpp
|
|
FileInterface/RifEclipseRestartDataAccess.cpp
|
|
FileInterface/RifEclipseUnifiedRestartFileAccess.cpp
|
|
FileInterface/RifReaderEclipseInput.cpp
|
|
FileInterface/RifReaderEclipseOutput.cpp
|
|
FileInterface/RifReaderMockModel.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
SocketInterface/RiaSocketServer.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
ProjectDataModel/RimCellFilter.cpp
|
|
ProjectDataModel/RimCellPropertyFilter.cpp
|
|
ProjectDataModel/RimCellPropertyFilterCollection.cpp
|
|
ProjectDataModel/RimCellRangeFilter.cpp
|
|
ProjectDataModel/RimCellRangeFilterCollection.cpp
|
|
ProjectDataModel/RimDefines.cpp
|
|
ProjectDataModel/RimLegendConfig.cpp
|
|
ProjectDataModel/RimProject.cpp
|
|
ProjectDataModel/RimReservoir.cpp
|
|
ProjectDataModel/RimInputProperty.cpp
|
|
ProjectDataModel/RimInputPropertyCollection.cpp
|
|
ProjectDataModel/RimInputReservoir.cpp
|
|
ProjectDataModel/RimResultReservoir.cpp
|
|
ProjectDataModel/RimReservoirView.cpp
|
|
ProjectDataModel/RimResultDefinition.cpp
|
|
ProjectDataModel/RimResultSlot.cpp
|
|
ProjectDataModel/RimCellEdgeResultSlot.cpp
|
|
ProjectDataModel/RimWell.cpp
|
|
ProjectDataModel/RimWellCollection.cpp
|
|
ProjectDataModel/RimScriptCollection.cpp
|
|
ProjectDataModel/RimCalcScript.cpp
|
|
ProjectDataModel/RimExportInputPropertySettings.cpp
|
|
ProjectDataModel/RimBinaryExportSettings.cpp
|
|
|
|
ProjectDataModel/RimUiTreeModelPdm.cpp
|
|
ProjectDataModel/RimUiTreeView.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
ReservoirDataModel/RigCell.cpp
|
|
ReservoirDataModel/RigGridBase.cpp
|
|
ReservoirDataModel/RigReservoirCellResults.cpp
|
|
ReservoirDataModel/RigLocalGrid.cpp
|
|
ReservoirDataModel/RigMainGrid.cpp
|
|
ReservoirDataModel/RigReservoir.cpp
|
|
ReservoirDataModel/RigReservoirBuilderMock.cpp
|
|
ReservoirDataModel/RigWellResults.cpp
|
|
)
|
|
|
|
list( APPEND CPP_SOURCES
|
|
UserInterface/RICursors.cpp
|
|
UserInterface/RIMainWindow.cpp
|
|
UserInterface/RIPreferencesDialog.cpp
|
|
UserInterface/RIResultInfoPanel.cpp
|
|
UserInterface/RIViewer.cpp
|
|
UserInterface/RIProcessMonitor.cpp
|
|
|
|
)
|
|
|
|
# Define files for MOC-ing
|
|
set ( QT_MOC_HEADERS
|
|
Application/RIApplication.h
|
|
|
|
ProjectDataModel/RimUiTreeModelPdm.h
|
|
ProjectDataModel/RimUiTreeView.h
|
|
|
|
UserInterface/RIMainWindow.h
|
|
UserInterface/RIPreferencesDialog.h
|
|
UserInterface/RIResultInfoPanel.h
|
|
UserInterface/RIViewer.h
|
|
UserInterface/RIProcessMonitor.h
|
|
SocketInterface/RiaSocketServer.h
|
|
)
|
|
|
|
qt4_wrap_cpp( MOC_FILES_CPP ${QT_MOC_HEADERS} )
|
|
|
|
# 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
|
|
qt4_add_resources( QRC_FILES_CPP ${QRC_FILES} )
|
|
|
|
|
|
#############################################################################
|
|
# creating PCH's for MSVC and GCC on Linux
|
|
#############################################################################
|
|
|
|
set( RAW_SOURCES ${CPP_SOURCES} )
|
|
list( REMOVE_ITEM RAW_SOURCES RIStdInclude.cpp)
|
|
list( REMOVE_ITEM RAW_SOURCES ReservoirDataModel/RigReaderInterfaceECL.cpp)
|
|
list( REMOVE_ITEM RAW_SOURCES ModelVisualization/RivCellEdgeEffectGenerator.cpp)
|
|
list( REMOVE_ITEM RAW_SOURCES ModelVisualization/RivPipeGeometryGenerator.cpp)
|
|
list( REMOVE_ITEM RAW_SOURCES ModelVisualization/RivWellPipesPartMgr.cpp)
|
|
list( REMOVE_ITEM RAW_SOURCES ModelVisualization/RivWellHeadPartMgr.cpp)
|
|
|
|
|
|
list( REMOVE_ITEM RAW_SOURCES
|
|
FileInterface/RifEclipseInputFileTools.cpp
|
|
FileInterface/RifEclipseOutputFileTools.cpp
|
|
FileInterface/RifEclipseRestartFilesetAccess.cpp
|
|
FileInterface/RifEclipseRestartDataAccess.cpp
|
|
FileInterface/RifEclipseUnifiedRestartFileAccess.cpp
|
|
FileInterface/RifReaderEclipseInput.cpp
|
|
FileInterface/RifReaderEclipseOutput.cpp
|
|
)
|
|
|
|
include( CustomPCH.cmake )
|
|
set( ALL_INCLUDES
|
|
${LibCore_SOURCE_DIR}
|
|
${LibGeometry_SOURCE_DIR}
|
|
${LibGuiQt_SOURCE_DIR}
|
|
${LibRender_SOURCE_DIR}
|
|
${LibViewing_SOURCE_DIR}
|
|
${QT_INCLUDES}
|
|
)
|
|
|
|
set( PCH_NAME RIStdInclude )
|
|
set( GCC_PCH_TARGET gccPCH )
|
|
set( PCH_COMPILER_DEFINE EMPTY )
|
|
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set( PCH_COMPILER_DEFINE CVF_LINUX)
|
|
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
|
|
precompiled_header( RAW_SOURCES ALL_INCLUDES ${GCC_PCH_TARGET} ${PCH_NAME} ${PCH_COMPILER_DEFINE} )
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
add_executable(ResInsight
|
|
${CPP_SOURCES}
|
|
${MOC_FILES_CPP}
|
|
${QRC_FILES_CPP}
|
|
${HEADER_FILES}
|
|
)
|
|
|
|
|
|
set( LINK_LIBRARIES
|
|
cafPdmCvf
|
|
cafUserInterface
|
|
cafProjectDataModel
|
|
cafViewer
|
|
cafAnimControl
|
|
CommonCode
|
|
LibGuiQt
|
|
LibViewing
|
|
LibRender
|
|
LibGeometry
|
|
LibCore
|
|
${OPENGL_LIBRARIES}
|
|
${QT_LIBRARIES}
|
|
)
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set ( EXTERNAL_LINK_LIBRARIES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert/ecl/lib/libecl.a
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert/util/lib/libutil.a
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert/geometry/lib/libgeometry.a
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert/well/lib/libwell.a
|
|
lapack
|
|
z # In case libz is not included in libQtCore
|
|
)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
set ( EXTERNAL_LINK_LIBRARIES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert-windows/ecl/lib/libecl.lib
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert-windows/util/lib/libutil.lib
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert-windows/geometry/lib/libgeometry.lib
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert-windows/well/lib/libwell.lib
|
|
)
|
|
endif()
|
|
|
|
target_link_libraries( ResInsight ${LINK_LIBRARIES} ${EXTERNAL_LINK_LIBRARIES})
|
|
|
|
# Copy Dlls
|
|
if (MSVC)
|
|
|
|
# Qt DLLs
|
|
set (QTLIBLIST QtCore QtCored QtGui QtGuid QtOpenGl QtOpenGld QtNetwork QtNetworkd)
|
|
foreach (qtlib ${QTLIBLIST})
|
|
add_custom_command(TARGET ResInsight POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${QT_BINARY_DIR}/${qtlib}4.dll"
|
|
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>)
|
|
endforeach( qtlib )
|
|
|
|
|
|
# DLLs ERT depends on
|
|
add_custom_command(TARGET ResInsight POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
"${PROJECT_SOURCE_DIR}/../ThirdParty/Ert-windows/bin/"
|
|
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>)
|
|
|
|
|
|
# ERT DLLs
|
|
set (ERT_MODULES ecl geometry util well)
|
|
foreach (ert_module ${ERT_MODULES})
|
|
add_custom_command(TARGET ResInsight POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/Ert-windows/${ert_module}/lib/lib${ert_module}.dll"
|
|
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>)
|
|
endforeach()
|
|
|
|
endif(MSVC)
|
|
|
|
#############################################################################
|
|
# Install
|
|
#############################################################################
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set_target_properties(ResInsight PROPERTIES INSTALL_RPATH "${RESINSIGHT_FINAL_INSTALL_PATH};.")
|
|
|
|
# Find Qt libraries and sym links
|
|
file (GLOB RESINSIGHT_FILES
|
|
${QT_LIBRARY_DIR}/libQtCore.so*
|
|
${QT_LIBRARY_DIR}/libQtGui.so*
|
|
${QT_LIBRARY_DIR}/libQtOpenGL.so*
|
|
${QT_LIBRARY_DIR}/libQtNetwork.so*
|
|
)
|
|
|
|
endif()
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
set (RESINSIGHT_FILES
|
|
${QT_LIBRARY_DIR}/QtCore4.dll
|
|
${QT_LIBRARY_DIR}/QtGui4.dll
|
|
${QT_LIBRARY_DIR}/QtOpenGL4.dll
|
|
${QT_LIBRARY_DIR}/QtNetwork4.dll
|
|
)
|
|
endif()
|
|
|
|
set (RESINSIGHT_FILES ${RESINSIGHT_FILES}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/LicenseInformation.txt
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/gplLicense.txt
|
|
)
|
|
|
|
|
|
install(TARGETS ResInsight DESTINATION ${RESINSIGHT_FINAL_NAME})
|
|
|
|
install(FILES ${RESINSIGHT_FILES} DESTINATION ${RESINSIGHT_FINAL_NAME} )
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resinsight DESTINATION ${RESINSIGHT_FINAL_NAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )
|
|
|
|
|
|
|
|
IF(${CMAKE_SYSTEM_NAME} MATCHES "No_Linux")
|
|
install(CODE "
|
|
set (INSTALLFILE_LIST
|
|
${CMAKE_CURRENT_BINARY_DIR}/ResInsight
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/LicenseInformation.txt
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Adm/gplLicense.txt
|
|
${QT_LIBRARY_DIR}/libQtCore.so.4
|
|
${QT_LIBRARY_DIR}/libQtGui.so.4
|
|
${QT_LIBRARY_DIR}/libQtOpenGL.so.4
|
|
/usr/lib64/libgfortran.so.1
|
|
/usr/lib64/liblapack.so.3
|
|
/usr/lib64/libblas.so.3
|
|
)
|
|
execute_process(COMMAND rm -r ${CMAKE_BINARY_DIR}/Install/ResInsight )
|
|
execute_process(COMMAND mkdir -p ${CMAKE_BINARY_DIR}/Install/ResInsight )
|
|
foreach (installFile \${INSTALLFILE_LIST})
|
|
execute_process(COMMAND cp -v \${installFile} ${CMAKE_BINARY_DIR}/Install/ResInsight)
|
|
endforeach (installFile)
|
|
|
|
execute_process(COMMAND bash -c \"cd ${CMAKE_BINARY_DIR}/Install/ ; tar cvzf ResInsight_${STRPRODUCTVER}-bin.tar.gz ResInsight/*\" )
|
|
|
|
")
|
|
endif()
|