Commit ea77d53c authored by Jan Möbius's avatar Jan Möbius
Browse files

Qt5 autofind by matthias

git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@19080 383ad7c9-94d9-4d36-a494-682f7c89f535
parent 0787848d
...@@ -45,7 +45,7 @@ include (package) ...@@ -45,7 +45,7 @@ include (package)
include (ACGOutput) include (ACGOutput)
# try to use QT5 if possible otherwise stick to QT4 # try to use QT5 if possible otherwise stick to QT4
set (FORCE_QT4 ON CACHE BOOL "Use Qt4 even if Qt5 was found") set (FORCE_QT4 OFF CACHE BOOL "Use Qt4 even if Qt5 was found")
if (NOT FORCE_QT4) if (NOT FORCE_QT4)
acg_qt5 () acg_qt5 ()
...@@ -53,13 +53,18 @@ else() ...@@ -53,13 +53,18 @@ else()
set (QT5_FOUND false) set (QT5_FOUND false)
endif() endif()
if (NOT QT5_FOUND) if (NOT QT5_FOUND)
message(STATUS "Using QT4 for OpenFlipper") message(STATUS "Could not find QT5, searching for QT4")
acg_qt4 (4.7.0) acg_qt4 (4.7.0)
else () endif()
message(STATUS "Using QT5 for OpenFlipper")
endif () if (QT4_FOUND)
message(STATUS "Using QT4 for OpenFlipper")
elseif(QT5_FOUND)
message(STATUS "Using QT5 for OpenFlipper")
else()
message(FATAL_ERROR "Could not found any QT Version. Please specify QT5_INSTALL_PATH to build with QT5 or specify the QT_QMAKE_EXECUTABLE to the QT4 qmake")
endif()
acg_openmp () acg_openmp ()
#acg_ftgl () #acg_ftgl ()
......
...@@ -221,69 +221,76 @@ macro (acg_qt5) ...@@ -221,69 +221,76 @@ macro (acg_qt5)
#set (QT_MIN_VERSION ${ARGN}) #set (QT_MIN_VERSION ${ARGN})
#for custom installation of qt5, dont use any of these variables
set (QT5_INSTALL_PATH "" CACHE PATH "Path to Qt5 directory which contains lib and include folder") #try to find qt5 automatically
#for custom installation of qt5, dont use any of these variables
if (EXISTS ${QT5_INSTALL_PATH}) set (QT5_INSTALL_PATH "" CACHE PATH "Path to Qt5 directory which contains lib and include folder")
# if (NOT EXISTS "${QT5_INSTALL_PATH}/include") if (EXISTS "${QT5_INSTALL_PATH}/include")
# message( FATAL_ERROR "Could not find Qt5 include directory. Please set QT5_INSTALL_PATH to the directory which contains Qt5 lib and include folder.") set (CMAKE_PREFIX_PATH "${QT5_INSTALL_PATH}")
# endif() set (QT5_INSTALL_PATH_EXISTS TRUE)
# if (NOT EXISTS "${QT5_INSTALL_PATH}/lib") endif()
# message( FATAL_ERROR "Could not find Qt5 lib directory. Please set QT5_INSTALL_PATH to the directory which contains Qt5 lib and include folder.")
# endif() #glu32.lib is needed by qt5 opengl version. it cannot find it by itself so we help qt
else() #this block has to be executed, before Qt5Gui is searched, otherwise we will end up with the (not so useful) QT5 error message
message( FATAL_ERROR "The Given QT5_INSTALL_PATH does not exists") if ( WIN32 )
set(WINDOWS_SDK_LIBS "COULD_NOT_FOUND" CACHE PATH "Path to the latest windows sdk libs which includes glu32.lib. Used by Qt5")
if (EXISTS "${WINDOWS_SDK_LIBS}\\glu32.lib")
set (CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${WINDOWS_SDK_LIBS}")
elseif(QT5_INSTALL_PATH_EXISTS) #trying to install qt5. notify about missing sdk before the qt message comes
message(FATAL_ERROR "Could not find glu32.lib. This is necessary for QT5 OpenGL version for windows, spleace specify glu32.lib in WINDOWS_SDK_LIB")
endif()
endif(WIN32)
find_package (Qt5Core QUIET)
find_package (Qt5Declarative QUIET)
find_package (Qt5Widgets QUIET)
find_package (Qt5Gui QUIET)
find_package (Qt5OpenGL QUIET)
find_package (Qt5Network QUIET)
find_package (Qt5Script QUIET)
find_package (Qt5ScriptTools QUIET)
find_package (Qt5Sql QUIET)
find_package (Qt5Xml QUIET)
find_package (Qt5XmlPatterns QUIET)
find_package (Qt5Help QUIET)
find_package (Qt5WebKit QUIET)
find_package (Qt5UiTools QUIET)
find_package (Qt5Concurrent QUIET)
find_package (Qt5PrintSupport QUIET)
if (Qt5Core_FOUND AND Qt5Declarative_FOUND AND Qt5Widgets_FOUND
AND Qt5Gui_FOUND AND Qt5OpenGL_FOUND AND Qt5Network_FOUND
AND Qt5Script_FOUND AND Qt5ScriptTools_FOUND AND Qt5Sql_FOUND
AND Qt5Xml_FOUND AND Qt5XmlPatterns_FOUND AND Qt5Help_FOUND
AND Qt5WebKit_FOUND AND Qt5UiTools_FOUND AND Qt5Concurrent_FOUND
AND Qt5PrintSupport_FOUND)
set (QT5_FOUND TRUE)
endif() endif()
set (CMAKE_PREFIX_PATH ${QT5_INSTALL_PATH})
set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) if (QT5_FOUND)
#set plugin dir
set (QT_PLUGINS_DIR "${QT5_INSTALL_PATH}/plugins" CACHE PATH "") list(GET Qt5Gui_PLUGINS 0 _plugin)
set (QT_BINARY_DIR "${QT5_INSTALL_PATH}/bin" CACHE PATH "Qt5 binary Directory") if (_plugin)
get_target_property(_plugin_full ${_plugin} LOCATION)
#glu32.lib is needed by qt5 opengl version. it cannot find it by itself so we help qt get_filename_component(_plugin_dir ${_plugin_full} PATH)
if ( WIN32 ) set (QT_PLUGINS_DIR "${_plugin_dir}/../" CACHE PATH "Path to the qt plugin directory")
elseif(QT5_INSTALL_PATH_EXISTS)
set (QT_PLUGINS_DIR "${QT5_INSTALL_PATH}/plugins/" CACHE PATH "Path to the qt plugin directory")
elseif()
set (QT_PLUGINS_DIR "QT_PLUGIN_DIR_NOT_FOUND" CACHE PATH "Path to the qt plugin directory")
endif()
set(WINDOWS_SDK_LIBS "COULD_NOT_FOUND" CACHE PATH "Path to the latest windows sdk libs which includes glu32.lib") #set binary dir for fixupbundle
if (EXISTS "${WINDOWS_SDK_LIBS}\\glu32.lib") if(QT5_INSTALL_PATH_EXISTS)
set (WINDOWS_SDK_LIBS ${WINDOWS_SDK_LIBS}) set(_QT_BINARY_DIR "${QT5_INSTALL_PATH}/bin")
set (CMAKE_PREFIX_PATH "${QT5_INSTALL_PATH};${WINDOWS_SDK_LIBS}")
else() else()
message( FATAL_ERROR "Could not find glu32.lib in your Windows sdk libs.") get_target_property(_QT_BINARY_DIR ${Qt5Widgets_UIC_EXECUTABLE} LOCATION)
get_filename_component(_QT_BINARY_DIR ${_QT_BINARY_DIR} PATH)
endif() endif()
set (QT_BINARY_DIR "${_QT_BINARY_DIR}" CACHE PATH "Qt5 binary Directory")
endif()#WIN32
find_package (Qt5Core REQUIRED)
find_package (Qt5Declarative REQUIRED)
find_package (Qt5Widgets REQUIRED)
find_package (Qt5Gui REQUIRED)
find_package (Qt5OpenGL REQUIRED)
find_package (Qt5Network REQUIRED)
find_package (Qt5Script REQUIRED)
find_package (Qt5ScriptTools REQUIRED)
find_package (Qt5Sql REQUIRED)
find_package (Qt5Xml REQUIRED)
find_package (Qt5XmlPatterns REQUIRED)
find_package (Qt5Help REQUIRED)
find_package (Qt5WebKit REQUIRED)
find_package (Qt5UiTools REQUIRED)
find_package (Qt5Concurrent REQUIRED)
find_package (Qt5PrintSupport REQUIRED)
if (NOT WIN32 AND NOT APPLE)
find_package (Qt5X11Extras)
endif ()
set (QT5_FOUND ${Qt5Core_FOUND} AND ${Qt5Declarative} AND ${Qt5Widgets_FOUND}
AND ${Qt5Gui_FOUND} AND ${Qt5OpenGL_FOUND} AND ${Qt5Network_FOUND}
AND ${Qt5Script_FOUND} AND ${Qt5ScriptTools_FOUND} AND ${Qt5Sql_FOUND}
AND ${Qt5Xml_FOUND} AND ${Qt5XmlPatterns_FOUND} AND ${Qt5Help_FOUND}
AND ${Qt5WebKit_FOUND} AND ${Qt5UiTools_FOUND} AND ${Qt5Concurrent_FOUND}
AND ${Qt5PrintSupport_FOUND})
if (QT5_FOUND)
include_directories(${Qt5Core_INCLUDE_DIRS}) include_directories(${Qt5Core_INCLUDE_DIRS})
include_directories(${Qt5Declarative_INCLUDE_DIRS}) include_directories(${Qt5Declarative_INCLUDE_DIRS})
include_directories(${Qt5Widgets_INCLUDE_DIRS}) include_directories(${Qt5Widgets_INCLUDE_DIRS})
...@@ -324,7 +331,7 @@ macro (acg_qt5) ...@@ -324,7 +331,7 @@ macro (acg_qt5)
if ( NOT MSVC ) if ( NOT MSVC )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif() endif()
set (QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Declarative_LIBRARIES} ${Qt5Widgets_LIBRARIES} set (QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Declarative_LIBRARIES} ${Qt5Widgets_LIBRARIES}
${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${Qt5Network_LIBRARIES}
${Qt5Script_LIBRARIES} ${Qt5ScriptTools_LIBRARIES} ${Qt5Sql_LIBRARIES} ${Qt5Script_LIBRARIES} ${Qt5ScriptTools_LIBRARIES} ${Qt5Sql_LIBRARIES}
...@@ -338,28 +345,26 @@ macro (acg_qt5) ...@@ -338,28 +345,26 @@ macro (acg_qt5)
if (MSVC) if (MSVC)
set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5Core_QTMAIN_LIBRARIES}) set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5Core_QTMAIN_LIBRARIES})
endif() endif()
#add_definitions(-DQT_NO_OPENGL) #adding QT_NO_DEBUG to all release modes.
# Note: for multi generators like msvc you cannot set this definition depending of
#adding QT_NO_DEBUG to all release modes. # the current build type, because it may change in the future inside the ide and not via cmake
# Note: for multi generators like msvc you cannot set this definition depending of if (MSVC_IDE)
# the current build type, because it may change in the future inside the ide and not via cmake set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
if (MSVC_IDE) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG") set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_MINSITEREL "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG") else(MSVC_IDE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /DQT_NO_DEBUG") if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
else(MSVC_IDE) add_definitions(-DQT_NO_DEBUG)
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") endif()
add_definitions(-DQT_NO_DEBUG) endif(MSVC_IDE)
endif()
endif(MSVC_IDE) endif (QT5_FOUND)
endif ()
endmacro () endmacro ()
# unsets the given variable # unsets the given variable
...@@ -413,7 +418,7 @@ macro (acg_append_files ret ext) ...@@ -413,7 +418,7 @@ macro (acg_append_files ret ext)
foreach (_file ${_files}) foreach (_file ${_files})
get_filename_component (_filename ${_file} NAME) get_filename_component (_filename ${_file} NAME)
if (_filename MATCHES "^[.]") if (_filename MATCHES "^[.]")
list (REMOVE_ITEM _files ${_file}) list (REMOVE_ITEM _files ${_file})
endif () endif ()
endforeach () endforeach ()
list (APPEND ${ret} ${_files}) list (APPEND ${ret} ${_files})
...@@ -428,7 +433,7 @@ macro (acg_append_files_recursive ret ext) ...@@ -428,7 +433,7 @@ macro (acg_append_files_recursive ret ext)
foreach (_file ${_files}) foreach (_file ${_files})
get_filename_component (_filename ${_file} NAME) get_filename_component (_filename ${_file} NAME)
if (_filename MATCHES "^[.]") if (_filename MATCHES "^[.]")
list (REMOVE_ITEM _files ${_file}) list (REMOVE_ITEM _files ${_file})
endif () endif ()
endforeach () endforeach ()
list (APPEND ${ret} ${_files}) list (APPEND ${ret} ${_files})
...@@ -521,11 +526,7 @@ macro (acg_qt5_automoc moc_SRCS) ...@@ -521,11 +526,7 @@ macro (acg_qt5_automoc moc_SRCS)
set (_header ${_abs_FILE}) set (_header ${_abs_FILE})
set (_moc ${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp) set (_moc ${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp)
add_custom_command (OUTPUT ${_moc} qt5_generate_moc(${_header} ${_moc})
COMMAND ${QT_MOC_EXECUTABLE}
ARGS ${_moc_INCS} ${_header} -o ${_moc}
DEPENDS ${_header}
)
add_file_dependencies (${_abs_FILE} ${_moc}) add_file_dependencies (${_abs_FILE} ${_moc})
set (${moc_SRCS} ${${moc_SRCS}} ${_moc}) set (${moc_SRCS} ${${moc_SRCS}} ${_moc})
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment