shared.cmake 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Test moc include patterns
  2. include_directories("../MocInclude")
  3. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  4. # Generate .moc file externally and enabled SKIP_AUTOMOC on the file
  5. qtx_generate_moc(
  6. ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjA.hpp
  7. ${CMAKE_CURRENT_BINARY_DIR}/SObjA.moc)
  8. set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjA.cpp PROPERTY SKIP_AUTOMOC ON)
  9. # Generate .moc file externally from generated source file
  10. # and enabled SKIP_AUTOMOC on the source file
  11. add_custom_command(
  12. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp
  13. COMMAND ${CMAKE_COMMAND} -E copy
  14. ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjB.hpp.in
  15. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp)
  16. add_custom_command(
  17. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp
  18. COMMAND ${CMAKE_COMMAND} -E copy
  19. ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjB.cpp.in
  20. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp)
  21. qtx_generate_moc(
  22. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp
  23. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.moc)
  24. set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp PROPERTY SKIP_AUTOMOC ON)
  25. # Generate moc file externally and enabled SKIP_AUTOMOC on the header
  26. qtx_generate_moc(
  27. ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.hpp
  28. ${CMAKE_CURRENT_BINARY_DIR}/SObjCExtra_extMoc.cpp)
  29. set_property(
  30. SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.hpp
  31. PROPERTY SKIP_AUTOMOC ON)
  32. # Custom target to depend on
  33. set(SOBJC_MOC ${CMAKE_CURRENT_BINARY_DIR}/moc_SObjCExtra.cpp)
  34. add_custom_target("${MOC_INCLUDE_NAME}_SOBJC"
  35. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SObjCExtra_extMoc.cpp
  36. BYPRODUCTS ${SOBJC_MOC}
  37. COMMAND ${CMAKE_COMMAND} -E copy
  38. ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.moc.in
  39. ${SOBJC_MOC})
  40. # MOC_INCLUDE_NAME must be defined by the includer
  41. add_executable(${MOC_INCLUDE_NAME}
  42. # Common sources
  43. ../MocInclude/ObjA.cpp
  44. ../MocInclude/ObjB.cpp
  45. ../MocInclude/LObjA.cpp
  46. ../MocInclude/LObjB.cpp
  47. ../MocInclude/EObjA.cpp
  48. ../MocInclude/EObjAExtra.cpp
  49. ../MocInclude/EObjB.cpp
  50. ../MocInclude/subExtra/EObjBExtra.cpp
  51. ../MocInclude/SObjA.cpp
  52. ${CMAKE_CURRENT_BINARY_DIR}/SObjA.moc
  53. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp
  54. ${CMAKE_CURRENT_BINARY_DIR}/SObjB.moc
  55. ../MocInclude/SObjC.cpp
  56. ../MocInclude/SObjCExtra.hpp
  57. ../MocInclude/SObjCExtra.cpp
  58. ../MocInclude/subGlobal/GObj.cpp
  59. main.cpp
  60. )
  61. add_dependencies(${MOC_INCLUDE_NAME} "${MOC_INCLUDE_NAME}_SOBJC")
  62. target_link_libraries(${MOC_INCLUDE_NAME} ${QT_LIBRARIES})
  63. set_target_properties(${MOC_INCLUDE_NAME} PROPERTIES AUTOMOC ON)