summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2020-11-02 14:26:51 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2020-11-02 14:46:08 (GMT)
commitcb2d01c182d31d890990c2bcde1766d4fc65a318 (patch)
tree0247aa5851575e9bf7db22afa9db74e88060d7b9
parent013c4133f79d0bd5e82254d0dfdfa42a6c8dfcc8 (diff)
downloadCMake-cb2d01c182d31d890990c2bcde1766d4fc65a318.zip
CMake-cb2d01c182d31d890990c2bcde1766d4fc65a318.tar.gz
CMake-cb2d01c182d31d890990c2bcde1766d4fc65a318.tar.bz2
CMakePresets.json: Don't warn if no path argument is given
If --preset is specified with no path argument, use the current directory as the source directory, the preset's binaryDir as the binary directory, and don't issue the standard warning for no path specified. Fixes: #21386
-rw-r--r--Source/cmake.cxx8
-rw-r--r--Tests/RunCMake/CMakePresets/CMakePresets.json.in5
-rw-r--r--Tests/RunCMake/CMakePresets/GoodNoSourceArg.cmake3
-rw-r--r--Tests/RunCMake/CMakePresets/RunCMakeTest.cmake7
4 files changed, 22 insertions, 1 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index f4ab1b0..60a493c 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1005,9 +1005,15 @@ void cmake::SetArgs(const std::vector<std::string>& args)
const bool haveSourceDir = !this->GetHomeDirectory().empty();
const bool haveBinaryDir = !this->GetHomeOutputDirectory().empty();
+ const bool havePreset =
+#ifdef CMAKE_BOOTSTRAP
+ false;
+#else
+ !presetName.empty();
+#endif
if (this->CurrentWorkingMode == cmake::NORMAL_MODE && !haveSourceDir &&
- !haveBinaryDir) {
+ !haveBinaryDir && !havePreset) {
this->IssueMessage(
MessageType::WARNING,
"No source or binary directory provided. Both will be assumed to be "
diff --git a/Tests/RunCMake/CMakePresets/CMakePresets.json.in b/Tests/RunCMake/CMakePresets/CMakePresets.json.in
index a347120..54e4140 100644
--- a/Tests/RunCMake/CMakePresets/CMakePresets.json.in
+++ b/Tests/RunCMake/CMakePresets/CMakePresets.json.in
@@ -170,6 +170,11 @@
"binaryDir": "${sourceDir}/build"
},
{
+ "name": "GoodNoSourceArg",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build"
+ },
+ {
"name": "GoodInheritanceParentBase",
"hidden": true,
"generator": "@RunCMake_GENERATOR@",
diff --git a/Tests/RunCMake/CMakePresets/GoodNoSourceArg.cmake b/Tests/RunCMake/CMakePresets/GoodNoSourceArg.cmake
new file mode 100644
index 0000000..49e7a25
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/GoodNoSourceArg.cmake
@@ -0,0 +1,3 @@
+include(${CMAKE_CURRENT_LIST_DIR}/TestVariable.cmake)
+
+test_variable(CMAKE_BINARY_DIR "" "${CMAKE_SOURCE_DIR}/build")
diff --git a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
index 2caa66a..1ffda3d 100644
--- a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
@@ -179,6 +179,13 @@ unset(RunCMake_TEST_NO_CLEAN)
unset(CMakePresets_SOURCE_ARG)
unset(RunCMake_TEST_BINARY_DIR)
unset(CMakePresets_NO_S_ARG)
+set(CMakePresets_NO_SOURCE_ARGS 1)
+set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/GoodNoSourceArg")
+set(RunCMake_TEST_NO_CLEAN 1)
+run_cmake_presets(GoodNoSourceArg)
+unset(RunCMake_TEST_NO_CLEAN)
+unset(RunCMake_TEST_BINARY_DIR)
+unset(CMakePresets_NO_SOURCE_ARGS)
run_cmake_presets(GoodInheritanceParent)
run_cmake_presets(GoodInheritanceChild)
run_cmake_presets(GoodInheritanceOverride)