mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-09 07:39:47 -05:00
FeatureSummary: Add DEFAULT_DESCRIPTION option to feature_summary
If enabled and only one package type is selected, it will print the default title for the selected package type.
This commit is contained in:
committed by
Brad King
parent
fddc01bab3
commit
f9bc8cfeeb
@@ -196,7 +196,7 @@ endfunction()
|
|||||||
[VAR <variable_name>]
|
[VAR <variable_name>]
|
||||||
[INCLUDE_QUIET_PACKAGES]
|
[INCLUDE_QUIET_PACKAGES]
|
||||||
[FATAL_ON_MISSING_REQUIRED_PACKAGES]
|
[FATAL_ON_MISSING_REQUIRED_PACKAGES]
|
||||||
[DESCRIPTION "<description>"]
|
[DESCRIPTION "<description>" | DEFAULT_DESCRIPTION]
|
||||||
[QUIET_ON_EMPTY]
|
[QUIET_ON_EMPTY]
|
||||||
WHAT (ALL
|
WHAT (ALL
|
||||||
| PACKAGES_FOUND | PACKAGES_NOT_FOUND
|
| PACKAGES_FOUND | PACKAGES_NOT_FOUND
|
||||||
@@ -247,7 +247,10 @@ endfunction()
|
|||||||
information is "printed" into the specified variable. If ``FILENAME`` is
|
information is "printed" into the specified variable. If ``FILENAME`` is
|
||||||
not used, the information is printed to the terminal. Using the
|
not used, the information is printed to the terminal. Using the
|
||||||
``DESCRIPTION`` option a description or headline can be set which will be
|
``DESCRIPTION`` option a description or headline can be set which will be
|
||||||
printed above the actual content.
|
printed above the actual content. If only one type of
|
||||||
|
package was requested, no title is printed, unless it is explicitly set using
|
||||||
|
either ``DESCRIPTION`` to use a custom string, or ``DEFAULT_DESCRIPTION`` to
|
||||||
|
use a default title for the requested type.
|
||||||
If ``INCLUDE_QUIET_PACKAGES`` is given, packages which have been searched with
|
If ``INCLUDE_QUIET_PACKAGES`` is given, packages which have been searched with
|
||||||
``find_package(... QUIET)`` will also be listed. By default they are skipped.
|
``find_package(... QUIET)`` will also be listed. By default they are skipped.
|
||||||
If ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` is given, CMake will abort if a
|
If ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` is given, CMake will abort if a
|
||||||
@@ -306,8 +309,14 @@ endfunction()
|
|||||||
|
|
||||||
function(FEATURE_SUMMARY)
|
function(FEATURE_SUMMARY)
|
||||||
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
|
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
|
||||||
set(options APPEND INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES QUIET_ON_EMPTY)
|
set(options APPEND
|
||||||
set(oneValueArgs FILENAME VAR DESCRIPTION)
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
FATAL_ON_MISSING_REQUIRED_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
set(oneValueArgs FILENAME
|
||||||
|
VAR
|
||||||
|
DESCRIPTION)
|
||||||
set(multiValueArgs WHAT)
|
set(multiValueArgs WHAT)
|
||||||
|
|
||||||
CMAKE_PARSE_ARGUMENTS(_FS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
|
CMAKE_PARSE_ARGUMENTS(_FS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
|
||||||
@@ -320,6 +329,11 @@ function(FEATURE_SUMMARY)
|
|||||||
message(FATAL_ERROR "The call to FEATURE_SUMMARY() doesn't set the required WHAT argument.")
|
message(FATAL_ERROR "The call to FEATURE_SUMMARY() doesn't set the required WHAT argument.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(_FS_DEFAULT_DESCRIPTION AND DEFINED _FS_DESCRIPTION)
|
||||||
|
message(WARNING "DEFAULT_DESCRIPTION option discarded since DESCRIPTION is set.")
|
||||||
|
set(_FS_DEFAULT_DESCRIPTION 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(validWhatParts "ENABLED_FEATURES"
|
set(validWhatParts "ENABLED_FEATURES"
|
||||||
"DISABLED_FEATURES"
|
"DISABLED_FEATURES"
|
||||||
"PACKAGES_FOUND"
|
"PACKAGES_FOUND"
|
||||||
@@ -332,11 +346,24 @@ function(FEATURE_SUMMARY)
|
|||||||
"${_fsPkgType}_PACKAGES_NOT_FOUND")
|
"${_fsPkgType}_PACKAGES_NOT_FOUND")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
set(title_ENABLED_FEATURES "The following features have been enabled:")
|
||||||
|
set(title_DISABLED_FEATURES "The following features have been disabled:")
|
||||||
|
set(title_PACKAGES_FOUND "The following packages have been found:")
|
||||||
|
set(title_PACKAGES_NOT_FOUND "The following packages have not been found:")
|
||||||
|
foreach(_fsPkgType ${_fsPkgTypes})
|
||||||
|
set(title_${_fsPkgType}_PACKAGES_FOUND "The following ${_fsPkgType} packages have been found:")
|
||||||
|
set(title_${_fsPkgType}_PACKAGES_NOT_FOUND "The following ${_fsPkgType} packages have not been found:")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
list(FIND validWhatParts "${_FS_WHAT}" indexInList)
|
list(FIND validWhatParts "${_FS_WHAT}" indexInList)
|
||||||
if(NOT "${indexInList}" STREQUAL "-1")
|
if(NOT "${indexInList}" STREQUAL "-1")
|
||||||
_FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary ${_FS_INCLUDE_QUIET_PACKAGES} )
|
_FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary ${_FS_INCLUDE_QUIET_PACKAGES} )
|
||||||
if(_featureSummary OR NOT _FS_QUIET_ON_EMPTY)
|
if(_featureSummary OR NOT _FS_QUIET_ON_EMPTY)
|
||||||
set(_fullText "${_FS_DESCRIPTION}${_featureSummary}\n")
|
if(_FS_DEFAULT_DESCRIPTION)
|
||||||
|
set(_fullText "${title_${_FS_WHAT}}\n${_featureSummary}\n")
|
||||||
|
else()
|
||||||
|
set(_fullText "${_FS_DESCRIPTION}${_featureSummary}\n")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(_featureSummary)
|
if(_featureSummary)
|
||||||
@@ -375,15 +402,6 @@ function(FEATURE_SUMMARY)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(title_ENABLED_FEATURES "The following features have been enabled:")
|
|
||||||
set(title_DISABLED_FEATURES "The following features have been disabled:")
|
|
||||||
set(title_PACKAGES_FOUND "The following packages have been found:")
|
|
||||||
set(title_PACKAGES_NOT_FOUND "The following packages have not been found:")
|
|
||||||
foreach(_fsPkgType ${_fsPkgTypes})
|
|
||||||
set(title_${_fsPkgType}_PACKAGES_FOUND "The following ${_fsPkgType} packages have been found:")
|
|
||||||
set(title_${_fsPkgType}_PACKAGES_NOT_FOUND "The following ${_fsPkgType} packages have not been found:")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(_fullText "${_FS_DESCRIPTION}")
|
set(_fullText "${_FS_DESCRIPTION}")
|
||||||
foreach(part ${allWhatParts})
|
foreach(part ${allWhatParts})
|
||||||
set(_tmp)
|
set(_tmp)
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
-- The following RUNTIME packages have been found:
|
||||||
|
|
||||||
|
\* Foo, The Foo package, <https://foo.example/>
|
||||||
|
|
||||||
|
-- The following OPTIONAL packages have not been found:
|
||||||
|
|
||||||
|
\* Bar
|
||||||
|
|
||||||
|
-- The following REQUIRED packages have not been found:
|
||||||
|
|
||||||
|
\* Baz
|
||||||
|
|
||||||
|
--[ ]
|
||||||
|
\* Foo, The Foo package, <https://foo.example/>
|
||||||
|
|
||||||
|
--[ ]
|
||||||
|
\* Bar
|
||||||
|
|
||||||
|
--[ ]
|
||||||
|
\* Baz
|
||||||
|
|
||||||
|
-- RUNTIME pkgs found
|
||||||
|
|
||||||
|
\* Foo, The Foo package, <https://foo.example/>
|
||||||
|
|
||||||
|
-- OPTIONAL pkgs not found
|
||||||
|
|
||||||
|
\* Bar
|
||||||
|
|
||||||
|
-- REQUIRED pkgs not found
|
||||||
|
|
||||||
|
\* Baz
|
||||||
|
|
||||||
|
-- The following RUNTIME packages have been found:
|
||||||
|
|
||||||
|
\* Foo, The Foo package, <https://foo.example/>
|
||||||
|
|
||||||
|
-- The following OPTIONAL packages have not been found:
|
||||||
|
|
||||||
|
\* Bar
|
||||||
|
|
||||||
|
-- The following REQUIRED packages have not been found:
|
||||||
|
|
||||||
|
\* Baz
|
||||||
|
|
||||||
|
-- Configuring done
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
include(FeatureSummary)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
find_package(Foo)
|
||||||
|
find_package(Bar)
|
||||||
|
find_package(Baz)
|
||||||
|
|
||||||
|
set_package_properties(Foo PROPERTIES TYPE RUNTIME)
|
||||||
|
set_package_properties(Bar PROPERTIES TYPE OPTIONAL)
|
||||||
|
set_package_properties(Baz PROPERTIES TYPE REQUIRED)
|
||||||
|
|
||||||
|
feature_summary(WHAT ALL)
|
||||||
|
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY)
|
||||||
|
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "RUNTIME pkgs found\n")
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "RUNTIME pkgs not found\n")
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "OPTIONAL pkgs found\n")
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "OPTIONAL pkgs not found\n")
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "REQUIRED pkgs found\n")
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DESCRIPTION "REQUIRED pkgs not found\n")
|
||||||
|
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
feature_summary(WHAT RUNTIME_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
feature_summary(WHAT OPTIONAL_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
|
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND
|
||||||
|
INCLUDE_QUIET_PACKAGES
|
||||||
|
QUIET_ON_EMPTY
|
||||||
|
DEFAULT_DESCRIPTION)
|
||||||
@@ -14,6 +14,7 @@ run_cmake(FeatureSummaryFatalOnMissingRequiredPackages)
|
|||||||
run_cmake(FeatureSummaryIncludeQuietPackages)
|
run_cmake(FeatureSummaryIncludeQuietPackages)
|
||||||
run_cmake(FeatureSummaryQuietOnEmpty)
|
run_cmake(FeatureSummaryQuietOnEmpty)
|
||||||
run_cmake(FeatureSummaryMultipleDepends)
|
run_cmake(FeatureSummaryMultipleDepends)
|
||||||
|
run_cmake(FeatureSummaryDefaultDescription)
|
||||||
run_cmake(FeatureSummaryCustomTypes)
|
run_cmake(FeatureSummaryCustomTypes)
|
||||||
run_cmake(FeatureSummaryCustomBadDefault)
|
run_cmake(FeatureSummaryCustomBadDefault)
|
||||||
run_cmake(FeatureSummaryCustomRequired)
|
run_cmake(FeatureSummaryCustomRequired)
|
||||||
|
|||||||
Reference in New Issue
Block a user