72 lines
2.5 KiB
CMake
72 lines
2.5 KiB
CMake
|
# 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)
|