mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
cmake: Stop parsing after -- when detecting script mode
The fix in commit 08aa516880 (cmake: Stop parsing after `--` when
detecting script mode, 2022-12-06, v3.26.0-rc1~216^2) only corrected the
case where `-P -- -P <arg>` occurred and not `-P -- -P -<other>`.
Fixes: #24220
This commit is contained in:
committed by
Brad King
parent
2a0c105cf0
commit
f9e8a067c2
@@ -303,6 +303,13 @@ int do_cmake(int ac, char const* const* av)
|
||||
for (decltype(inputArgs.size()) i = 0; i < inputArgs.size(); ++i) {
|
||||
std::string const& arg = inputArgs[i];
|
||||
bool matched = false;
|
||||
|
||||
// Only in script mode do we stop parsing instead
|
||||
// of preferring the last mode flag provided
|
||||
if (arg == "--" && workingMode == cmake::SCRIPT_MODE) {
|
||||
parsedArgs = inputArgs;
|
||||
break;
|
||||
}
|
||||
for (auto const& m : arguments) {
|
||||
if (m.matches(arg)) {
|
||||
matched = true;
|
||||
@@ -311,11 +318,6 @@ int do_cmake(int ac, char const* const* av)
|
||||
}
|
||||
return 1; // failed to parse
|
||||
}
|
||||
// Only in script mode do we stop parsing instead
|
||||
// of preferring the last mode flag provided
|
||||
if (arg == "--" && workingMode == cmake::SCRIPT_MODE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!matched) {
|
||||
parsedArgs.emplace_back(av[i]);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
^-- CMAKE_ARGC='6'
|
||||
-- CMAKE_ARGV1='-P'
|
||||
-- CMAKE_ARGV2='[^']*/Tests/RunCMake/CommandLine/P_arbitrary_args.cmake'
|
||||
-- CMAKE_ARGV3='--'
|
||||
-- CMAKE_ARGV4='-P'
|
||||
-- CMAKE_ARGV5='-o'
|
||||
-- CMAKE_ARGV6=''
|
||||
-- CMAKE_ARGV7=''
|
||||
-- CMAKE_ARGV8=''
|
||||
-- CMAKE_ARGV9=''$
|
||||
@@ -56,6 +56,7 @@ run_cmake_command(P_no-file ${CMAKE_COMMAND} -P nosuchscriptfile.cmake)
|
||||
run_cmake_command(P_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_args.cmake" relative/path "${RunCMake_SOURCE_DIR}")
|
||||
run_cmake_command(P_arbitrary_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -DFOO -S -B --fresh --version)
|
||||
run_cmake_command(P_P_in_arbitrary_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -P "${RunCMake_SOURCE_DIR}/non_existing.cmake")
|
||||
run_cmake_command(P_P_in_arbitrary_args_2 ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -P -o)
|
||||
run_cmake_command(P_fresh ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_fresh.cmake" --fresh)
|
||||
|
||||
run_cmake_command(build-no-dir
|
||||
|
||||
Reference in New Issue
Block a user