diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 46ee8dbf0a..7b9dc2e9cd 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -145,6 +145,10 @@ auto const TryCompileArgParser = .BIND_LANG_PROPS(HIP) .BIND_LANG_PROPS(OBJC) .BIND_LANG_PROPS(OBJCXX) + /* keep semicolon on own line */; + +auto const TryRunArgParser = + cmArgumentParser{ TryCompileArgParser } .Bind("COMPILE_OUTPUT_VARIABLE"_s, &Arguments::CompileOutputVariable) .Bind("RUN_OUTPUT_VARIABLE"_s, &Arguments::RunOutputVariable) .Bind("RUN_OUTPUT_STDOUT_VARIABLE"_s, &Arguments::RunOutputStdOutVariable) @@ -160,7 +164,8 @@ Arguments cmCoreTryCompile::ParseArgs( cmRange::const_iterator> args, bool isTryRun) { std::vector unparsedArguments; - auto arguments = TryCompileArgParser.Parse(args, &unparsedArguments, 0); + const auto& parser = (isTryRun ? TryRunArgParser : TryCompileArgParser); + auto arguments = parser.Parse(args, &unparsedArguments, 0); if (!arguments.MaybeReportError(*(this->Makefile)) && !unparsedArguments.empty()) { std::string m = "Unknown arguments:"; @@ -194,31 +199,6 @@ Arguments cmCoreTryCompile::ParseArgs( arguments.RunWorkingDirectory->empty()) { arguments.RunWorkingDirectory = cm::nullopt; } - } else { - std::string tryRunArgs; - if (arguments.CompileOutputVariable) { - tryRunArgs = cmStrCat(tryRunArgs, " COMPILE_OUTPUT_VARIABLE\n"); - } - if (arguments.RunOutputVariable) { - tryRunArgs = cmStrCat(tryRunArgs, " RUN_OUTPUT_VARIABLE\n"); - } - if (arguments.RunOutputStdOutVariable) { - tryRunArgs = cmStrCat(tryRunArgs, " RUN_OUTPUT_STDOUT_VARIABLE\n"); - } - if (arguments.RunOutputStdErrVariable) { - tryRunArgs = cmStrCat(tryRunArgs, " RUN_OUTPUT_STDERR_VARIABLE\n"); - } - if (arguments.RunWorkingDirectory) { - tryRunArgs = cmStrCat(tryRunArgs, " WORKING_DIRECTORY\n"); - } - if (arguments.RunArgs) { - tryRunArgs = cmStrCat(tryRunArgs, " ARGS\n"); - } - if (!tryRunArgs.empty()) { - this->Makefile->IssueMessage( - MessageType::AUTHOR_WARNING, - cmStrCat("Ignoring try_run arguments for try_compile:\n", tryRunArgs)); - } } return arguments; } diff --git a/Tests/RunCMake/try_compile/TryRunArgs-stderr.txt b/Tests/RunCMake/try_compile/TryRunArgs-stderr.txt index 717c208931..2a58e71ac2 100644 --- a/Tests/RunCMake/try_compile/TryRunArgs-stderr.txt +++ b/Tests/RunCMake/try_compile/TryRunArgs-stderr.txt @@ -1,13 +1,18 @@ ^CMake Warning \(dev\) at TryRunArgs.cmake:[0-9]+ \(try_compile\): - Ignoring try_run arguments for try_compile: - - COMPILE_OUTPUT_VARIABLE - RUN_OUTPUT_VARIABLE - RUN_OUTPUT_STDOUT_VARIABLE - RUN_OUTPUT_STDERR_VARIABLE - WORKING_DIRECTORY - ARGS + Unknown arguments: + "COMPILE_OUTPUT_VARIABLE" + "compOutputVar" + "RUN_OUTPUT_VARIABLE" + "runOutputVar" + "RUN_OUTPUT_STDOUT_VARIABLE" + "runOutputStdOutVar" + "RUN_OUTPUT_STDERR_VARIABLE" + "runOutputStdErrVar" + "WORKING_DIRECTORY" + "runWorkDir" + "ARGS" + "runArgs" Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\) This warning is for project developers. Use -Wno-dev to suppress it.$