export: Restore support for empty TARGETS list

Refactoring in commit f5acecaa6f (cmExportCommand: Port to
cmArgumentParser, 2019-03-23, v3.15.0-rc1~270^2~3) broke the `export`
command's support for specifying `TARGETS` with no entries.  Fix it and
add a test case.

Fixes: #19415
This commit is contained in:
Brad King 2019-06-25 14:37:38 -04:00
parent 5c7880956f
commit 2ba5c37b3f
3 changed files with 11 additions and 2 deletions

View File

@ -4,6 +4,8 @@
#include "cm_static_string_view.hxx"
#include "cmsys/RegularExpression.hxx"
#include <algorithm>
#include <map>
#include <sstream>
#include <utility>
@ -66,7 +68,9 @@ bool cmExportCommand::InitialPass(std::vector<std::string> const& args,
}
std::vector<std::string> unknownArgs;
Arguments const arguments = parser.Parse(args, &unknownArgs);
std::vector<std::string> keywordsMissingValue;
Arguments const arguments =
parser.Parse(args, &unknownArgs, &keywordsMissingValue);
if (!unknownArgs.empty()) {
this->SetError("Unknown argument: \"" + unknownArgs.front() + "\".");
@ -128,7 +132,10 @@ bool cmExportCommand::InitialPass(std::vector<std::string> const& args,
return false;
}
ExportSet = it->second;
} else if (!arguments.Targets.empty()) {
} else if (!arguments.Targets.empty() ||
std::find(keywordsMissingValue.begin(),
keywordsMissingValue.end(),
"TARGETS") != keywordsMissingValue.end()) {
for (std::string const& currentTarget : arguments.Targets) {
if (this->Makefile->IsAlias(currentTarget)) {
std::ostringstream e;

View File

@ -0,0 +1 @@
export(TARGETS FILE targets.cmake)

View File

@ -1,6 +1,7 @@
include(RunCMake)
run_cmake(CustomTarget)
run_cmake(Empty)
run_cmake(TargetNotFound)
run_cmake(AppendExport)
run_cmake(OldIface)