file(GET_RUNTIME_DEPENDENCIES): Tolerate empty list arguments

Also list all keywords that were missing values instead of only the
first one.
This commit is contained in:
Kyle Edwards
2020-01-22 13:05:46 -05:00
committed by Brad King
parent 593d0f3a57
commit c998c8d560
3 changed files with 35 additions and 5 deletions

View File

@@ -25,6 +25,7 @@
#include "cm_static_string_view.hxx"
#include "cm_sys_stat.h"
#include "cmAlgorithms.h"
#include "cmArgumentParser.h"
#include "cmCryptoHash.h"
#include "cmExecutionStatus.h"
@@ -2674,9 +2675,20 @@ bool HandleGetRuntimeDependenciesCommand(std::vector<std::string> const& args,
cmSystemTools::SetFatalErrorOccured();
return false;
}
argIt = keywordsMissingValues.begin();
if (argIt != keywordsMissingValues.end()) {
status.SetError(cmStrCat("Keyword missing value: ", *argIt));
const std::vector<std::string> LIST_ARGS = { "DIRECTORIES",
"EXECUTABLES",
"LIBRARIES",
"MODULES",
"POST_EXCLUDE_REGEXES",
"POST_INCLUDE_REGEXES",
"PRE_EXCLUDE_REGEXES",
"PRE_INCLUDE_REGEXES" };
auto kwbegin = keywordsMissingValues.cbegin();
auto kwend = cmRemoveMatching(keywordsMissingValues, LIST_ARGS);
if (kwend != kwbegin) {
status.SetError(cmStrCat("Keywords missing values:\n ",
cmJoin(cmMakeRange(kwbegin, kwend), "\n ")));
cmSystemTools::SetFatalErrorOccured();
return false;
}

View File

@@ -13,6 +13,11 @@ Call Stack \(most recent call first\):
This warning is for project developers\. Use -Wno-dev to suppress it\.
CMake Error at file-GET_RUNTIME_DEPENDENCIES-badargs2\.cmake:[0-9]+ \(file\):
file Keyword missing value: BUNDLE_EXECUTABLE
file Keywords missing values:
RESOLVED_DEPENDENCIES_VAR
UNRESOLVED_DEPENDENCIES_VAR
CONFLICTING_DEPENDENCIES_PREFIX
BUNDLE_EXECUTABLE
Call Stack \(most recent call first\):
CMakeLists\.txt:[0-9]+ \(include\)$

View File

@@ -1,2 +1,15 @@
file(GET_RUNTIME_DEPENDENCIES BUNDLE_EXECUTABLE)
file(GET_RUNTIME_DEPENDENCIES
RESOLVED_DEPENDENCIES_VAR
UNRESOLVED_DEPENDENCIES_VAR
CONFLICTING_DEPENDENCIES_PREFIX
BUNDLE_EXECUTABLE
EXECUTABLES
LIBRARIES
MODULES
DIRECTORIES
PRE_INCLUDE_REGEXES
PRE_EXCLUDE_REGEXES
POST_INCLUDE_REGEXES
POST_EXCLUDE_REGEXES
)
message(FATAL_ERROR "This message should not be displayed")