# Test moc include patterns include_directories("../MocInclude") include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Generate .moc file externally and enabled SKIP_AUTOMOC on the file qtx_generate_moc( ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjA.hpp ${CMAKE_CURRENT_BINARY_DIR}/SObjA.moc) set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjA.cpp PROPERTY SKIP_AUTOMOC ON) # Generate .moc file externally from generated source file # and enabled SKIP_AUTOMOC on the source file add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjB.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjB.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp) qtx_generate_moc( ${CMAKE_CURRENT_BINARY_DIR}/SObjB.hpp ${CMAKE_CURRENT_BINARY_DIR}/SObjB.moc) set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp PROPERTY SKIP_AUTOMOC ON) # Generate moc file externally and enabled SKIP_AUTOMOC on the header qtx_generate_moc( ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.hpp ${CMAKE_CURRENT_BINARY_DIR}/SObjCExtra_extMoc.cpp) set_property( SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.hpp PROPERTY SKIP_AUTOMOC ON) # Custom target to depend on set(SOBJC_MOC ${CMAKE_CURRENT_BINARY_DIR}/moc_SObjCExtra.cpp) add_custom_target("${MOC_INCLUDE_NAME}_SOBJC" DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SObjCExtra_extMoc.cpp BYPRODUCTS ${SOBJC_MOC} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../MocInclude/SObjCExtra.moc.in ${SOBJC_MOC}) # MOC_INCLUDE_NAME must be defined by the includer add_executable(${MOC_INCLUDE_NAME} # Common sources ../MocInclude/ObjA.cpp ../MocInclude/ObjB.cpp ../MocInclude/LObjA.cpp ../MocInclude/LObjB.cpp ../MocInclude/EObjA.cpp ../MocInclude/EObjAExtra.cpp ../MocInclude/EObjB.cpp ../MocInclude/subExtra/EObjBExtra.cpp ../MocInclude/SObjA.cpp ${CMAKE_CURRENT_BINARY_DIR}/SObjA.moc ${CMAKE_CURRENT_BINARY_DIR}/SObjB.cpp ${CMAKE_CURRENT_BINARY_DIR}/SObjB.moc ../MocInclude/SObjC.cpp ../MocInclude/SObjCExtra.hpp ../MocInclude/SObjCExtra.cpp ../MocInclude/subGlobal/GObj.cpp main.cpp ) add_dependencies(${MOC_INCLUDE_NAME} "${MOC_INCLUDE_NAME}_SOBJC") target_link_libraries(${MOC_INCLUDE_NAME} ${QT_LIBRARIES}) set_target_properties(${MOC_INCLUDE_NAME} PROPERTIES AUTOMOC ON)