diff options
Diffstat (limited to 'cmake/opentrack-qt.cmake')
-rw-r--r-- | cmake/opentrack-qt.cmake | 81 |
1 files changed, 43 insertions, 38 deletions
diff --git a/cmake/opentrack-qt.cmake b/cmake/opentrack-qt.cmake index 911eec5b..1735e836 100644 --- a/cmake/opentrack-qt.cmake +++ b/cmake/opentrack-qt.cmake @@ -1,57 +1,45 @@ -find_package(Qt5 REQUIRED COMPONENTS Core Network Widgets LinguistTools Gui QUIET) +include_guard(GLOBAL) if(WIN32) find_package(Qt5Gui REQUIRED COMPONENTS QWindowsIntegrationPlugin) endif() -find_package(Qt5 COMPONENTS SerialPort QUIET) +set(qt-required-components Core Network Widgets LinguistTools Gui) +set(qt-optional-components SerialPort) +set(qt-imported-targets Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets) +if(APPLE) + list(APPEND qt-required-components "DBus") + list(APPEND qt-optional-components "Multimedia") + list(APPEND qt-imported-targets Qt5::DBus Qt5::Multimedia) +endif() -include_directories(SYSTEM ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS}) -add_definitions(${Qt5Core_DEFINITIONS} ${Qt5Gui_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ${Qt5Network_DEFINITIONS}) -set(MY_QT_LIBS ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES}) +find_package(Qt5 REQUIRED COMPONENTS ${qt-required-components} QUIET) +find_package(Qt5 COMPONENTS ${qt-optional-components} QUIET) -function(otr_pdb_for_dll varname path) - set("${varname}" "" PARENT_SCOPE) - get_filename_component(dir "${path}" DIRECTORY) - get_filename_component(name-only "${path}" NAME_WE) - set(pdb-path "${dir}/${name-only}.pdb") - if(EXISTS "${pdb-path}") - set("${varname}" "${pdb-path}" PARENT_SCOPE) - endif() -endfunction() +set(MY_QT_LIBS ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES}) +if(APPLE) + list(APPEND MY_QT_LIBS ${Qt5Multimedia_LIBRARIES} ${Qt5DBus_LIBRARIES}) +endif() function(otr_install_qt_libs) - if(WIN32) - foreach(i Qt5::Core Qt5::Gui Qt5::Network Qt5::SerialPort Qt5::Widgets) - get_property(path TARGET "${i}" PROPERTY LOCATION) - if("${path}" STREQUAL "") - message(FATAL_ERROR "${i} ${path}") - endif() - install(FILES "${path}" DESTINATION .) - if(MSVC AND opentrack_install-debug-info) - otr_pdb_for_dll(pdb-path "${path}") - if(pdb-path) - install(FILES "${pdb-path}" DESTINATION "${opentrack-hier-debug}") - endif() - endif() - endforeach() - - get_property(path TARGET Qt5::QWindowsIntegrationPlugin PROPERTY LOCATION) - install(FILES "${path}" DESTINATION ./platforms) - if(MSVC AND opentrack_install-debug-info) - otr_pdb_for_dll(pdb-path "${path}") - if(pdb-path) - install(FILES "${pdb-path}" DESTINATION "${opentrack-hier-debug}") - endif() + foreach(i ${qt-imported-targets}) + if(NOT TARGET "${i}") + continue() endif() + otr_install_lib(${i} ".") + endforeach() + if(WIN32) + otr_install_lib(Qt5::QWindowsIntegrationPlugin "./platforms") endif() endfunction() -otr_install_qt_libs() +if(WIN32 OR APPLE) + otr_install_qt_libs() +endif() function(otr_qt n) if(".${${n}-cc}${${n}-cxx}${${n}-hh}" STREQUAL ".") message(FATAL_ERROR "project ${n} not globbed") endif() - qt5_wrap_cpp(${n}-moc ${${n}-hh} OPTIONS --no-notes) + qt5_wrap_cpp(${n}-moc ${${n}-hh} OPTIONS --no-notes -I "${CMAKE_CURRENT_BINARY_DIR}" -I "${CMAKE_SOURCE_DIR}") qt5_wrap_ui(${n}-uih ${${n}-ui}) qt5_add_resources(${n}-rcc ${${n}-rc}) @@ -61,3 +49,20 @@ function(otr_qt n) endforeach() set(${n}-all "${${n}-all}" PARENT_SCOPE) endfunction() + +function(otr_qt2 n) + target_include_directories("${n}" SYSTEM PRIVATE + ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} + ) + target_compile_definitions("${n}" PRIVATE + ${Qt5Core_DEFINITIONS} ${Qt5Gui_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ${Qt5Network_DEFINITIONS} + -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT + -DQT_MESSAGELOGCONTEXT + ) + if(CMAKE_COMPILER_IS_GNUCXX) + set_property(SOURCE ${${n}-moc} ${${n}-rcc} + APPEND_STRING PROPERTY COMPILE_FLAGS " -w -Wno-error ") + endif() +endfunction() + +include_directories("${CMAKE_BINARY_DIR}") |