Attached Files | problems_missing_subdirs_cmakelists.zip [^] (1,164 bytes) 2015-08-04 16:06
0001-add_subdirectory-Fix-error-message-on-missing-CMakeL.patch [^] (5,877 bytes) 2015-08-04 16:44 [Show Content] [Hide Content]From c4d2f64f3c9dea3a5fcd8af5bb389db00ccd64df Mon Sep 17 00:00:00 2001
Message-Id: <c4d2f64f3c9dea3a5fcd8af5bb389db00ccd64df.1438721075.git.brad.king@kitware.com>
From: Brad King <brad.king@kitware.com>
Date: Tue, 4 Aug 2015 16:39:31 -0400
Subject: [PATCH] add_subdirectory: Fix error message on missing CMakeLists.txt
(#15680)
Refactoring in commit v3.3.0-rc1~76^2 (cmMakefile: Handle CMP0014 before
configuring the generator, 2015-05-14) accidentally left the file name
"/CMakeLists.txt" in the error message. Remove it and add a test case.
---
Source/cmMakefile.cxx | 4 ++--
Tests/RunCMake/CMakeLists.txt | 1 +
Tests/RunCMake/add_subdirectory/CMakeLists.txt | 3 +++
Tests/RunCMake/add_subdirectory/DoesNotExist-result.txt | 1 +
Tests/RunCMake/add_subdirectory/DoesNotExist-stderr.txt | 5 +++++
Tests/RunCMake/add_subdirectory/DoesNotExist.cmake | 1 +
Tests/RunCMake/add_subdirectory/Missing-result.txt | 1 +
Tests/RunCMake/add_subdirectory/Missing-stderr.txt | 8 ++++++++
Tests/RunCMake/add_subdirectory/Missing.cmake | 1 +
Tests/RunCMake/add_subdirectory/Missing/Missing.txt | 0
Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake | 4 ++++
11 files changed, 27 insertions(+), 2 deletions(-)
create mode 100644 Tests/RunCMake/add_subdirectory/CMakeLists.txt
create mode 100644 Tests/RunCMake/add_subdirectory/DoesNotExist-result.txt
create mode 100644 Tests/RunCMake/add_subdirectory/DoesNotExist-stderr.txt
create mode 100644 Tests/RunCMake/add_subdirectory/DoesNotExist.cmake
create mode 100644 Tests/RunCMake/add_subdirectory/Missing-result.txt
create mode 100644 Tests/RunCMake/add_subdirectory/Missing-stderr.txt
create mode 100644 Tests/RunCMake/add_subdirectory/Missing.cmake
create mode 100644 Tests/RunCMake/add_subdirectory/Missing/Missing.txt
create mode 100644 Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index ee6c1da..bdc55f2 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1564,8 +1564,8 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2)
cmSystemTools::Message(msg.c_str());
}
- currentStart += "/CMakeLists.txt";
- if(!cmSystemTools::FileExists(currentStart.c_str(), true))
+ std::string const currentStartFile = currentStart + "/CMakeLists.txt";
+ if (!cmSystemTools::FileExists(currentStartFile, true))
{
// The file is missing. Check policy CMP0014.
std::ostringstream e;
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 81029cd..4e7c7b3 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -118,6 +118,7 @@ add_RunCMake_test(Syntax)
add_RunCMake_test(add_custom_command)
add_RunCMake_test(add_custom_target)
add_RunCMake_test(add_dependencies)
+add_RunCMake_test(add_subdirectory)
add_RunCMake_test(build_command)
add_RunCMake_test(execute_process)
add_RunCMake_test(export)
diff --git a/Tests/RunCMake/add_subdirectory/CMakeLists.txt b/Tests/RunCMake/add_subdirectory/CMakeLists.txt
new file mode 100644
index 0000000..18dfd26
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.2)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/add_subdirectory/DoesNotExist-result.txt b/Tests/RunCMake/add_subdirectory/DoesNotExist-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/DoesNotExist-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/add_subdirectory/DoesNotExist-stderr.txt b/Tests/RunCMake/add_subdirectory/DoesNotExist-stderr.txt
new file mode 100644
index 0000000..369a956
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/DoesNotExist-stderr.txt
@@ -0,0 +1,5 @@
+^CMake Error at DoesNotExist.cmake:1 \(add_subdirectory\):
+ add_subdirectory given source "DoesNotExist" which is not an existing
+ directory.
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/add_subdirectory/DoesNotExist.cmake b/Tests/RunCMake/add_subdirectory/DoesNotExist.cmake
new file mode 100644
index 0000000..fe2945c
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/DoesNotExist.cmake
@@ -0,0 +1 @@
+add_subdirectory(DoesNotExist)
diff --git a/Tests/RunCMake/add_subdirectory/Missing-result.txt b/Tests/RunCMake/add_subdirectory/Missing-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/Missing-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/add_subdirectory/Missing-stderr.txt b/Tests/RunCMake/add_subdirectory/Missing-stderr.txt
new file mode 100644
index 0000000..aba0675
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/Missing-stderr.txt
@@ -0,0 +1,8 @@
+^CMake Error at Missing.cmake:1 \(add_subdirectory\):
+ The source directory
+
+ .*/Tests/RunCMake/add_subdirectory/Missing
+
+ does not contain a CMakeLists.txt file.
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/add_subdirectory/Missing.cmake b/Tests/RunCMake/add_subdirectory/Missing.cmake
new file mode 100644
index 0000000..0e68927
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/Missing.cmake
@@ -0,0 +1 @@
+add_subdirectory(Missing)
diff --git a/Tests/RunCMake/add_subdirectory/Missing/Missing.txt b/Tests/RunCMake/add_subdirectory/Missing/Missing.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake b/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake
new file mode 100644
index 0000000..a3ddec8
--- /dev/null
+++ b/Tests/RunCMake/add_subdirectory/RunCMakeTest.cmake
@@ -0,0 +1,4 @@
+include(RunCMake)
+
+run_cmake(DoesNotExist)
+run_cmake(Missing)
--
2.4.6
|