#3752 Upgrade ResInsight CMake-system to support both Qt5 and Qt5

This commit is contained in:
Gaute Lindkvist 2018-11-27 09:47:44 +01:00
parent 5c66b901c3
commit 6cee9eb9e6
6 changed files with 137 additions and 45 deletions

4
.gitignore vendored
View File

@ -69,3 +69,7 @@ Ankh.NoLoad
/Resinsight_Host.creator
/Resinsight_Host.config
*.RESINSIGHT_IDX
/Fwk/VizFwk/.vs/VizFramework/v15/Solution.VC.db-wal
/Fwk/VizFwk/.vs/VizFramework/v15/Solution.VC.db-shm
/Fwk/VizFwk/.vs/VizFramework/v15/Solution.VC.db
/Fwk/VizFwk/.vs/VizFramework/v15/Browse.VC.db

View File

@ -2,6 +2,19 @@ cmake_minimum_required (VERSION 2.8.12)
project (ApplicationCode)
# Open GL
find_package( OpenGL )
find_package(Qt5Core CONFIG QUIET)
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
@ -220,9 +233,14 @@ set ( QT_MOC_HEADERS
SocketInterface/RiaSocketServer.h
)
qt4_wrap_cpp( MOC_FILES_CPP ${QT_MOC_HEADERS} )
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()
qt4_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} )
# NOTE! Resources in subfolders must append to QRC_FILES using the following statement
# set( QRC_FILES
@ -237,7 +255,17 @@ set( QRC_FILES
)
# Runs RCC on specified files
qt4_add_resources( QRC_FILES_CPP ${QRC_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 )
@ -273,7 +301,7 @@ endif()
set( EXE_FILES
${EXE_FILES}
${CPP_SOURCES}
${MOC_FILES_CPP}
${MOC_SOURCE_FILES}
${FORM_FILES_CPP}
${QRC_FILES_CPP}
${WIN_RESOURCE}
@ -401,11 +429,19 @@ endif()
if (MSVC)
# Qt DLLs
set (QTLIBLIST QtCore QtCored QtGui QtGuid QtOpenGl QtOpenGld QtNetwork QtNetworkd QtScript QtScriptd QtScriptTools QtScriptToolsd)
foreach (qtlib ${QTLIBLIST})
list(APPEND RI_DLL_FILENAMES ${QT_BINARY_DIR}/${qtlib}4.dll)
endforeach( qtlib )
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

View File

@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 2.8)
cmake_minimum_required (VERSION 2.8.12)
project (RifOdbReader)

View File

@ -2,8 +2,16 @@ cmake_minimum_required (VERSION 2.8.12)
project (WellPathImportSsihub)
find_package(Qt5Core CONFIG QUIET)
if (Qt5Core_FOUND)
find_package(Qt5 CONFIG REQUIRED Core Network)
else()
find_package(Qt4 COMPONENTS QtCore QtNetwork REQUIRED)
include(${QT_USE_FILE})
endif(Qt5Core_FOUND)
# These headers need to go through Qt's MOC compiler
set( QOBJECT_HEADERS
set( QT_MOC_HEADERS
RiuWellImportWizard.h
)
@ -12,8 +20,13 @@ set( QT_UI_FILES
)
if ( NOT CMAKE_AUTOMOC )
qt4_wrap_cpp( MOC_FILES_CPP ${QOBJECT_HEADERS} )
qt4_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} )
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()
endif()
include_directories(
@ -37,13 +50,17 @@ add_library( ${PROJECT_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/../FileInterface/RifJsonEncodeDecode.cpp
${MOC_FILES_CPP}
${MOC_SOURCE_FILES}
${FORM_FILES_CPP}
${HEADER_FILES}
)
if (Qt5Core_FOUND)
set(QT_LIBRARIES Qt5::Core Qt5::Network)
endif()
target_link_libraries ( ${PROJECT_NAME}
cafUserInterface cafPdmCvf CommonCode
cafUserInterface cafPdmCvf CommonCode ${QT_LIBRARIES}
)
source_group("" FILES ${PROJECT_FILES})

View File

@ -3,9 +3,19 @@ cmake_minimum_required (VERSION 2.8)
project ( WellPathImportSsihubTestApp )
set (QT_COMPONENTS_REQUIRED QtCore QtGui QtMain QtOpenGl QtNetwork QtScript QtScriptTools)
find_package (Qt4 COMPONENTS ${QT_COMPONENTS_REQUIRED} REQUIRED)
include (${QT_USE_FILE})
find_package(Qt5 CONFIG COMPONENTS Core)
if (Qt5Core_FOUND)
message(STATUS "Found Qt5")
find_package(Qt5 CONFIG REQUIRED Core Gui OpenGl Network Script ScriptTools Widgets)
else()
set (QT_COMPONENTS_REQUIRED QtCore QtGui QtMain QtOpenGl QtNetwork QtScript QtScriptTools)
find_package(Qt4 COMPONENTS ${QT_COMPONENTS_REQUIRED} REQUIRED)
include(${QT_USE_FILE})
if (QT4_FOUND)
message(STATUS "Found Qt4")
endif(QT4_FOUND)
endif(Qt5Core_FOUND)
# Open GL
find_package( OpenGL )
@ -29,18 +39,26 @@ include_directories(
set ( QT_MOC_HEADERS
)
qt4_wrap_cpp( MOC_FILES_CPP
${QT_MOC_HEADERS}
)
if (Qt5Core_FOUND)
qt5_wrap_cpp(MOC_SOURCE_FILES ${MOC_HEADER_FILES} )
else()
qt4_wrap_cpp(MOC_SOURCE_FILES ${MOC_HEADER_FILES} )
endif()
# Resource file
set( QRC_FILES
)
# Runs RCC on specified files
qt4_add_resources( QRC_FILES_CPP
${QRC_FILES}
)
if (Qt5Core_FOUND)
qt5_add_resources( QRC_FILES_CPP
${QRC_FILES}
)
else()
qt4_add_resources( QRC_FILES_CPP
${QRC_FILES}
)
endif()
# add the executable
@ -48,10 +66,14 @@ add_executable ( ${PROJECT_NAME}
main.cpp
TestTools.cpp
TestTools.h
${MOC_FILES_CPP}
${MOC_SOURCE_FILES}
${QRC_FILES_CPP}
)
if (Qt5Core_FOUND)
set(QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::OpenGl Qt5::Network Qt5::Script Qt5::ScriptTools Qt5::Widgets)
endif()
target_link_libraries ( ${PROJECT_NAME}
cafProjectDataModel
@ -62,13 +84,23 @@ target_link_libraries ( ${PROJECT_NAME}
)
# Copy Qt Dlls
if (MSVC)
foreach (qtlib ${QT_COMPONENTS_REQUIRED})
# Debug
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}d4.dll ${CMAKE_CURRENT_BINARY_DIR}/Debug/${qtlib}d4.dll)
# Release
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}4.dll ${CMAKE_CURRENT_BINARY_DIR}/Release/${qtlib}4.dll)
endforeach( qtlib )
endif(MSVC)
if (Qt5Core_FOUND)
foreach (qtlib ${QT_LIBRARIES})
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${qtlib}> $<TARGET_FILE_DIR:${PROJECT_NAME}>
)
endforeach(qtlib)
# Copy Qt Dlls
else()
# Copy Qt Dlls
if (MSVC)
foreach (qtlib ${QT_COMPONENTS_REQUIRED})
# Debug
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}d4.dll ${CMAKE_BINARY_DIR}/Debug/${qtlib}d4.dll)
# Release
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}4.dll ${CMAKE_BINARY_DIR}/Release/${qtlib}4.dll)
endforeach( qtlib )
endif(MSVC)
endif(Qt5Core_FOUND)

View File

@ -5,6 +5,7 @@ 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")
@ -231,17 +232,19 @@ list(APPEND THIRD_PARTY_LIBRARIES
################################################################################
# Qt
################################################################################
set (QT_COMPONENTS_REQUIRED QtCore QtGui QtMain QtOpenGl QtNetwork QtScript QtScriptTools)
find_package (Qt4 COMPONENTS ${QT_COMPONENTS_REQUIRED})
if ( NOT QT4_FOUND )
message(FATAL_ERROR "Package Qt4 is required, but not found. Please specify qmake for variable QT_QMAKE_EXECUTABLE")
endif ( NOT QT4_FOUND )
find_package(Qt5Core CONFIG QUIET)
if (QT_VERSION_MINOR LESS 6)
message(FATAL_ERROR "Qt 4.6 is required, please specify qmake for variable QT_QMAKE_EXECUTABLE")
endif()
include (${QT_USE_FILE})
if (Qt5Core_FOUND)
message(STATUS "Found Qt5")
find_package (Qt5 CONFIG REQUIRED Core Widgets OpenGL Network Script ScriptTools)
else()
message(STATUS "No Qt5 found, trying Qt4")
find_package(Qt4 COMPONENTS QtCore QtGui QtMain REQUIRED)
if (QT_VERSION_MINOR LESS 6)
message(FATAL_ERROR "Qt 4.6 is required, please specify qmake for variable QT_QMAKE_EXECUTABLE")
endif()
include(${QT_USE_FILE})
endif(Qt5Core_FOUND)
# Open GL
find_package( OpenGL )