CMake build: Use add_qtc_depends for all add_qtc_* functions

Also added current source directory as public include directory.

Change-Id: I6a23e02b84be3fc5f29ac33ef8ccd7d70a48f494
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Cristian Adam
2019-05-23 16:43:49 +02:00
committed by Cristian Adam
parent 69b3e34bdc
commit be0d7aa3e9

View File

@@ -106,13 +106,7 @@ function(add_qtc_library name)
set(library_type OBJECT) set(library_type OBJECT)
endif() endif()
separate_object_libraries("${_arg_DEPENDS}" add_library(${name} ${library_type} ${_arg_SOURCES})
depends object_lib_depends object_lib_depends_objects)
separate_object_libraries("${_arg_PUBLIC_DEPENDS}"
public_depends object_public_depends object_public_depends_objects)
add_library(${name} ${library_type} ${_arg_SOURCES}
${object_lib_depends_objects} ${object_public_depends_objects})
if (${name} MATCHES "^[^0-9]+") if (${name} MATCHES "^[^0-9]+")
string(TOUPPER "${name}_LIBRARY" EXPORT_SYMBOL) string(TOUPPER "${name}_LIBRARY" EXPORT_SYMBOL)
@@ -122,38 +116,19 @@ function(add_qtc_library name)
set(TEST_DEFINES WITH_TESTS SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") set(TEST_DEFINES WITH_TESTS SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
endif() endif()
if (NOT (${library_type} STREQUAL "OBJECT" AND CMAKE_VERSION VERSION_LESS 3.14))
target_link_libraries(${name}
PRIVATE ${depends} ${_TEST_DEPENDS}
PUBLIC ${public_depends}
)
else()
foreach(list depends public_depends)
foreach(lib IN LISTS ${list})
if (TARGET ${lib})
target_compile_definitions(${name} PUBLIC $<TARGET_PROPERTY:${lib},INTERFACE_COMPILE_DEFINITIONS>)
target_include_directories(${name} PUBLIC $<TARGET_PROPERTY:${lib},INTERFACE_INCLUDE_DIRECTORIES>)
endif()
endforeach()
endforeach()
endif()
target_include_directories(${name} target_include_directories(${name}
PRIVATE ${_arg_INCLUDES} PRIVATE ${_arg_INCLUDES}
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/.." ${_arg_PUBLIC_INCLUDES} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/.." ${_arg_PUBLIC_INCLUDES}
) )
target_compile_definitions(${name} target_compile_definitions(${name}
PRIVATE ${EXPORT_SYMBOL} ${DEFAULT_DEFINES} ${_arg_DEFINES} ${TEST_DEFINES} PRIVATE ${EXPORT_SYMBOL} ${DEFAULT_DEFINES} ${_arg_DEFINES} ${TEST_DEFINES}
PUBLIC ${_arg_PUBLIC_DEFINES} PUBLIC ${_arg_PUBLIC_DEFINES}
) )
foreach(obj_lib IN LISTS object_lib_depends)
target_compile_definitions(${name} PRIVATE $<TARGET_PROPERTY:${obj_lib},INTERFACE_COMPILE_DEFINITIONS>) add_qtc_depends(${name}
target_include_directories(${name} PRIVATE $<TARGET_PROPERTY:${obj_lib},INTERFACE_INCLUDE_DIRECTORIES>) PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS}
endforeach() PUBLIC ${_arg_PUBLIC_DEPENDS}
foreach(obj_lib IN LISTS object_public_depends) )
target_compile_definitions(${name} PUBLIC $<TARGET_PROPERTY:${obj_lib},INTERFACE_COMPILE_DEFINITIONS>)
target_include_directories(${name} PUBLIC $<TARGET_PROPERTY:${obj_lib},INTERFACE_INCLUDE_DIRECTORIES>)
endforeach()
foreach(file IN LISTS _arg_EXPLICIT_MOC) foreach(file IN LISTS _arg_EXPLICIT_MOC)
set_explicit_moc(${name} "${file}") set_explicit_moc(${name} "${file}")
@@ -323,7 +298,7 @@ function(add_qtc_plugin target_name)
target_include_directories(${target_name} target_include_directories(${target_name}
PRIVATE ${_arg_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}/.." "${CMAKE_CURRENT_BINARY_DIR}" PRIVATE ${_arg_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}/.." "${CMAKE_CURRENT_BINARY_DIR}"
"${CMAKE_BINARY_DIR}/src" "${CMAKE_BINARY_DIR}/src"
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/.." ${_arg_PUBLIC_INCLUDES} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/.." ${_arg_PUBLIC_INCLUDES}
) )
target_compile_definitions(${target_name} target_compile_definitions(${target_name}
PRIVATE ${EXPORT_SYMBOL} ${DEFAULT_DEFINES} ${_arg_DEFINES} ${TEST_DEFINES} PRIVATE ${EXPORT_SYMBOL} ${DEFAULT_DEFINES} ${_arg_DEFINES} ${TEST_DEFINES}
@@ -364,7 +339,7 @@ function(add_qtc_plugin target_name)
) )
endfunction() endfunction()
function(extend_qtc_plugin target_name) function(extend_qtc_target target_name)
cmake_parse_arguments(_arg cmake_parse_arguments(_arg
"" ""
"SOURCES_PREFIX" "SOURCES_PREFIX"
@@ -373,14 +348,13 @@ function(extend_qtc_plugin target_name)
) )
if (${_arg_UNPARSED_ARGUMENTS}) if (${_arg_UNPARSED_ARGUMENTS})
message(FATAL_ERROR "extend_qtc_plugin had unparsed arguments") message(FATAL_ERROR "extend_qtc_target had unparsed arguments")
endif() endif()
qtc_plugin_enabled(_plugin_enabled ${target_name})
if (NOT _arg_CONDITION) if (NOT _arg_CONDITION)
set(_arg_CONDITION ON) set(_arg_CONDITION ON)
endif() endif()
if ((NOT (${_arg_CONDITION})) OR (NOT _plugin_enabled)) if (NOT (${_arg_CONDITION}))
return() return()
endif() endif()
@@ -400,6 +374,16 @@ function(extend_qtc_plugin target_name)
foreach(file IN LISTS _arg_EXPLICIT_MOC) foreach(file IN LISTS _arg_EXPLICIT_MOC)
set_explicit_moc(${target_name} "${file}") set_explicit_moc(${target_name} "${file}")
endforeach() endforeach()
endfunction()
function(extend_qtc_plugin target_name)
qtc_plugin_enabled(_plugin_enabled ${target_name})
if (NOT _plugin_enabled)
return()
endif()
extend_qtc_target(${target_name} ${ARGN})
endfunction() endfunction()
function(add_qtc_executable name) function(add_qtc_executable name)
@@ -453,18 +437,15 @@ function(add_qtc_test name)
set(TEST_DEFINES SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") set(TEST_DEFINES SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
file(RELATIVE_PATH _RPATH "/${IDE_BIN_PATH}" "/${IDE_LIBRARY_PATH}") file(RELATIVE_PATH _RPATH "/${IDE_BIN_PATH}" "/${IDE_LIBRARY_PATH}")
separate_object_libraries("${_arg_DEPENDS}" add_executable(${name} ${_arg_SOURCES})
depends object_lib_depends object_lib_depends_objects)
add_executable(${name} ${_arg_SOURCES} ${object_lib_depends_objects}) add_qtc_depends(${name}
PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS}
)
target_include_directories(${name} PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES}) target_include_directories(${name} PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES})
target_compile_definitions(${name} PRIVATE ${_arg_DEFINES} ${TEST_DEFINES} ${DEFAULT_DEFINES}) target_compile_definitions(${name} PRIVATE ${_arg_DEFINES} ${TEST_DEFINES} ${DEFAULT_DEFINES})
target_link_libraries(${name} PRIVATE ${depends} ${_TEST_DEPENDS})
foreach(obj_lib IN LISTS object_lib_depends)
target_compile_definitions(${name} PRIVATE $<TARGET_PROPERTY:${obj_lib},INTERFACE_COMPILE_DEFINITIONS>)
target_include_directories(${name} PRIVATE $<TARGET_PROPERTY:${obj_lib},INTERFACE_INCLUDE_DIRECTORIES>)
endforeach()
set_target_properties(${name} PROPERTIES set_target_properties(${name} PROPERTIES
BUILD_RPATH "${_RPATH_BASE}/${_RPATH}" BUILD_RPATH "${_RPATH_BASE}/${_RPATH}"
INSTALL_RPATH "${_RPATH_BASE}/${_RPATH}" INSTALL_RPATH "${_RPATH_BASE}/${_RPATH}"