You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.5 KiB
72 lines
2.5 KiB
5 years ago
|
cmake_minimum_required(VERSION 3.11)
|
||
|
project(AutogenOriginDependsOff)
|
||
|
include("../AutogenCoreTest.cmake")
|
||
|
|
||
|
set(CSD ${CMAKE_CURRENT_SOURCE_DIR})
|
||
|
set(CBD ${CMAKE_CURRENT_BINARY_DIR})
|
||
|
include_directories(${CSD})
|
||
|
include_directories(${CBD})
|
||
|
|
||
|
# A GENERATED file ensures there will be an _autogen target in VS
|
||
|
add_custom_command (
|
||
|
OUTPUT "${CBD}/config.hpp"
|
||
|
COMMAND ${CMAKE_COMMAND} -E copy "${CSD}/config.hpp.in" "${CBD}/config.hpp"
|
||
|
)
|
||
|
|
||
|
|
||
|
# Library "a_mc" provides a header that holds a string with the content of
|
||
|
# mocs_compilation.cpp from a_qt. It therefore must depend on a_qt_autogen.
|
||
|
add_custom_target ( a_mc
|
||
|
COMMAND ${CMAKE_COMMAND} -E sleep 2
|
||
|
COMMAND ${CMAKE_COMMAND}
|
||
|
"-DMCF=${CBD}/a_qt_autogen/mocs_compilation.cpp"
|
||
|
"-DCF_IN=${CSD}/a_mc.hpp.in"
|
||
|
"-DCF_OUT=${CBD}/a_mc.hpp"
|
||
|
-P ${CSD}/configure_content.cmake
|
||
|
)
|
||
|
add_dependencies ( a_mc a_qt_autogen )
|
||
|
|
||
|
# Library "a_qt"
|
||
|
# - depends on a GENERATED file
|
||
|
# - AUTOMOC enabled
|
||
|
# - depends on a target (a_mc) that depends on a_qt_qutogen
|
||
|
add_library ( a_qt a_qt.cpp "${CBD}/config.hpp" )
|
||
|
add_dependencies ( a_qt a_mc )
|
||
|
target_link_libraries ( a_qt ${QT_QTCORE_TARGET})
|
||
|
set_target_properties ( a_qt PROPERTIES AUTOMOC TRUE)
|
||
|
# Disable AUTOGEN_ORIGIN_DEPENDS to avoid loop dependencies
|
||
|
set_target_properties ( a_qt PROPERTIES AUTOGEN_ORIGIN_DEPENDS OFF)
|
||
|
|
||
|
|
||
|
# Library "b_mc" provides a header that holds a string function that returns
|
||
|
# the content of mocs_compilation.cpp from b_qt.
|
||
|
# It therefore must depend on b_qt_autogen.
|
||
|
add_custom_command (
|
||
|
OUTPUT ${CBD}/b_mc.cpp
|
||
|
DEPENDS b_qt_autogen
|
||
|
COMMAND ${CMAKE_COMMAND} -E sleep 2
|
||
|
COMMAND ${CMAKE_COMMAND}
|
||
|
"-DMCF=${CBD}/b_qt_autogen/mocs_compilation.cpp"
|
||
|
"-DCF_IN=${CSD}/b_mc.cpp.in"
|
||
|
"-DCF_OUT=${CBD}/b_mc.cpp"
|
||
|
-P ${CSD}/configure_content.cmake
|
||
|
)
|
||
|
add_library ( b_mc ${CSD}/b_mc.hpp ${CBD}/b_mc.cpp )
|
||
|
|
||
|
# Library "b_qt"
|
||
|
# - depends on a GENERATED file
|
||
|
# - AUTOMOC enabled
|
||
|
# - depends on a library (b_mc) that depends on b_qt_qutogen
|
||
|
add_library ( b_qt b_qt.cpp "${CBD}/config.hpp" )
|
||
|
target_link_libraries ( b_qt b_mc )
|
||
|
target_link_libraries ( b_qt ${QT_QTCORE_TARGET})
|
||
|
set_target_properties ( b_qt PROPERTIES AUTOMOC TRUE)
|
||
|
# Disable AUTOGEN_ORIGIN_DEPENDS to avoid loop dependencies
|
||
|
set_target_properties ( b_qt PROPERTIES AUTOGEN_ORIGIN_DEPENDS OFF)
|
||
|
|
||
|
|
||
|
# The main target depends on both libraries which depend on the _autogen
|
||
|
# target of the main target.
|
||
|
add_executable ( autogenOriginDependsOff main.cpp )
|
||
|
target_link_libraries ( autogenOriginDependsOff a_qt b_qt )
|