CMakeLists.txt 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. cmake_minimum_required(VERSION 2.8.12)
  2. project(QtAutoUicInterface)
  3. if (QT_TEST_VERSION STREQUAL 4)
  4. find_package(Qt4 REQUIRED)
  5. include(UseQt4)
  6. set(QT_CORE_TARGET Qt4::QtCore)
  7. set(QT_GUI_TARGET Qt4::QtGui)
  8. else()
  9. if (NOT QT_TEST_VERSION STREQUAL 5)
  10. message(SEND_ERROR "Invalid Qt version specified.")
  11. endif()
  12. find_package(Qt5Widgets REQUIRED)
  13. set(QT_CORE_TARGET Qt5::Core)
  14. set(QT_GUI_TARGET Qt5::Widgets)
  15. endif()
  16. set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
  17. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  18. set(CMAKE_AUTOMOC ON)
  19. set(CMAKE_AUTOUIC ON)
  20. # BEGIN Upstream
  21. set(CMAKE_VERBOSE_MAKEFILE ON)
  22. add_library(KI18n klocalizedstring.cpp)
  23. target_link_libraries(KI18n ${QT_CORE_TARGET})
  24. set(autouic_options
  25. -tr tr2$<$<NOT:$<BOOL:$<TARGET_PROPERTY:NO_KUIT_SEMANTIC>>>:x>i18n
  26. )
  27. if (NOT Qt5Widgets_VERSION VERSION_LESS 5.3.0)
  28. list(APPEND autouic_options -include klocalizedstring.h)
  29. endif()
  30. set_property(TARGET KI18n APPEND PROPERTY
  31. INTERFACE_AUTOUIC_OPTIONS ${autouic_options}
  32. )
  33. set(domainProp $<TARGET_PROPERTY:TRANSLATION_DOMAIN>)
  34. set(nameLower $<LOWER_CASE:$<MAKE_C_IDENTIFIER:$<TARGET_PROPERTY:NAME>>>)
  35. set(domain_logic
  36. $<$<BOOL:${domainProp}>:${domainProp}>$<$<NOT:$<BOOL:${domainProp}>>:${nameLower}>
  37. )
  38. set_property(TARGET KI18n APPEND PROPERTY
  39. INTERFACE_COMPILE_DEFINITIONS "TRANSLATION_DOMAIN=${domain_logic}"
  40. )
  41. # END upstream
  42. add_library(LibWidget libwidget.cpp)
  43. target_link_libraries(LibWidget KI18n ${QT_GUI_TARGET})
  44. set_property(TARGET LibWidget PROPERTY NO_KUIT_SEMANTIC ON)
  45. set_property(TARGET LibWidget PROPERTY TRANSLATION_DOMAIN customdomain)
  46. add_library(MyWidget mywidget.cpp)
  47. target_link_libraries(MyWidget KI18n ${QT_GUI_TARGET})
  48. add_executable(QtAutoUicInterface main.cpp)
  49. target_compile_definitions(QtAutoUicInterface
  50. PRIVATE
  51. UI_LIBWIDGET_H="${CMAKE_CURRENT_BINARY_DIR}/ui_libwidget.h"
  52. UI_MYWIDGET_H="${CMAKE_CURRENT_BINARY_DIR}/ui_mywidget.h"
  53. )