Toplevel builds: Add utility toplevel targets for each module
Add a target for each level-1 subdirectory in a module. Ninja already generates phony targets such as "qtbase/src/all", but those are not available in e.g. IDE integrations of CMake. With this addition, targets like qtbase, qtbase_src, and qtbase_tests are available in IDEs. Change-Id: If1c3369e9413b3ce127e68c443d4d22949708d5e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 08f46bb40075778e89ba9aed3cef53d990852022) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
cc26c1e025
commit
a1be4de712
@ -184,6 +184,50 @@ macro(qt_build_internals_set_up_private_api)
|
|||||||
qt_check_if_tools_will_be_built()
|
qt_check_if_tools_will_be_built()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
# find all targets defined in $subdir by recursing through all added subdirectories
|
||||||
|
# populates $qt_repo_targets with a ;-list of non-UTILITY targets
|
||||||
|
macro(qt_build_internals_get_repo_targets subdir)
|
||||||
|
get_directory_property(_directories DIRECTORY "${subdir}" SUBDIRECTORIES)
|
||||||
|
if (_directories)
|
||||||
|
foreach(_directory IN LISTS _directories)
|
||||||
|
get_directory_property(_targets DIRECTORY "${_directory}" BUILDSYSTEM_TARGETS)
|
||||||
|
if (_targets)
|
||||||
|
foreach(_target IN LISTS _targets)
|
||||||
|
get_target_property(_type ${_target} TYPE)
|
||||||
|
if (NOT (${_type} STREQUAL "UTILITY" OR ${_type} STREQUAL "INTERFACE"))
|
||||||
|
list(APPEND qt_repo_targets "${_target}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
qt_build_internals_get_repo_targets("${_directory}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# add toplevel targets for each subdirectory, e.g. qtbase_src
|
||||||
|
function(qt_build_internals_add_toplevel_targets)
|
||||||
|
set(qt_repo_target_all "")
|
||||||
|
get_directory_property(directories DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" SUBDIRECTORIES)
|
||||||
|
foreach(directory IN LISTS directories)
|
||||||
|
set(qt_repo_targets "")
|
||||||
|
get_filename_component(qt_repo_target_basename ${directory} NAME)
|
||||||
|
qt_build_internals_get_repo_targets("${directory}")
|
||||||
|
if (qt_repo_targets)
|
||||||
|
set(qt_repo_target_name "${qt_repo_targets_name}_${qt_repo_target_basename}")
|
||||||
|
message(DEBUG "${qt_repo_target_name} depends on ${qt_repo_targets}")
|
||||||
|
add_custom_target("${qt_repo_target_name}"
|
||||||
|
DEPENDS ${qt_repo_targets}
|
||||||
|
COMMENT "Building everything in ${qt_repo_targets_name}/${qt_repo_target_basename}")
|
||||||
|
list(APPEND qt_repo_target_all "${qt_repo_target_name}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
if (qt_repo_target_all)
|
||||||
|
add_custom_target("${qt_repo_targets_name}"
|
||||||
|
DEPENDS ${qt_repo_target_all}
|
||||||
|
COMMENT "Building everything in ${qt_repo_targets_name}")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
macro(qt_enable_cmake_languages)
|
macro(qt_enable_cmake_languages)
|
||||||
include(CheckLanguage)
|
include(CheckLanguage)
|
||||||
set(__qt_required_language_list C CXX)
|
set(__qt_required_language_list C CXX)
|
||||||
@ -254,6 +298,7 @@ macro(qt_build_repo_begin)
|
|||||||
|
|
||||||
string(TOLOWER ${PROJECT_NAME} project_name_lower)
|
string(TOLOWER ${PROJECT_NAME} project_name_lower)
|
||||||
|
|
||||||
|
set(qt_repo_targets_name ${project_name_lower})
|
||||||
set(qt_docs_target_name docs_${project_name_lower})
|
set(qt_docs_target_name docs_${project_name_lower})
|
||||||
set(qt_docs_prepare_target_name prepare_docs_${project_name_lower})
|
set(qt_docs_prepare_target_name prepare_docs_${project_name_lower})
|
||||||
set(qt_docs_generate_target_name generate_docs_${project_name_lower})
|
set(qt_docs_generate_target_name generate_docs_${project_name_lower})
|
||||||
@ -316,6 +361,8 @@ macro(qt_build_repo_end)
|
|||||||
|
|
||||||
if(NOT QT_SUPERBUILD)
|
if(NOT QT_SUPERBUILD)
|
||||||
qt_print_build_instructions()
|
qt_print_build_instructions()
|
||||||
|
else()
|
||||||
|
qt_build_internals_add_toplevel_targets()
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user