mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 06:09:52 -06:00
Merge topic 'tolerate-removed-cache'
25b6e7b7 Tolerate removed/replaced CMakeCache.txt with old CMakeFiles/
This commit is contained in:
@@ -50,6 +50,9 @@
|
||||
#include <cm_jsoncpp_writer.h>
|
||||
#endif
|
||||
|
||||
const std::string kCMAKE_PLATFORM_INFO_INITIALIZED =
|
||||
"CMAKE_PLATFORM_INFO_INITIALIZED";
|
||||
|
||||
class cmInstalledFile;
|
||||
|
||||
bool cmTarget::StrictTargetComparison::operator()(cmTarget const* t1,
|
||||
@@ -428,6 +431,23 @@ void cmGlobalGenerator::EnableLanguage(
|
||||
// set the dir for parent files so they can be used by modules
|
||||
mf->AddDefinition("CMAKE_PLATFORM_INFO_DIR", rootBin.c_str());
|
||||
|
||||
if (!this->CMakeInstance->GetIsInTryCompile()) {
|
||||
// Keep a mark in the cache to indicate that we've initialized the
|
||||
// platform information directory. If the platform information
|
||||
// directory exists but the mark is missing then CMakeCache.txt
|
||||
// has been removed or replaced without also removing the CMakeFiles/
|
||||
// directory. In this case remove the platform information directory
|
||||
// so that it will be re-initialized and the relevant information
|
||||
// restored in the cache.
|
||||
if (cmSystemTools::FileIsDirectory(rootBin) &&
|
||||
!mf->IsOn(kCMAKE_PLATFORM_INFO_INITIALIZED)) {
|
||||
cmSystemTools::RemoveADirectory(rootBin);
|
||||
}
|
||||
this->GetCMakeInstance()->AddCacheEntry(
|
||||
kCMAKE_PLATFORM_INFO_INITIALIZED, "1",
|
||||
"Platform information initialized", cmStateEnums::INTERNAL);
|
||||
}
|
||||
|
||||
// find and make sure CMAKE_MAKE_PROGRAM is defined
|
||||
if (!this->FindMakeProgram(mf)) {
|
||||
return;
|
||||
|
||||
1
Tests/RunCMake/Configure/RemoveCache-stdout.txt
Normal file
1
Tests/RunCMake/Configure/RemoveCache-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
-- The C compiler identification is
|
||||
17
Tests/RunCMake/Configure/RemoveCache.cmake
Normal file
17
Tests/RunCMake/Configure/RemoveCache.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
enable_language(C)
|
||||
|
||||
set(vars
|
||||
CMAKE_EXECUTABLE_FORMAT
|
||||
)
|
||||
|
||||
if(CMAKE_HOST_UNIX)
|
||||
list(APPEND vars
|
||||
CMAKE_UNAME
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(v IN LISTS vars)
|
||||
if(NOT DEFINED ${v})
|
||||
message(SEND_ERROR "Variable '${v}' is not set!")
|
||||
endif()
|
||||
endforeach()
|
||||
@@ -24,3 +24,12 @@ file(WRITE "${depend}" "2")
|
||||
run_cmake_command(RerunCMake-build2 ${CMAKE_COMMAND} --build .)
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
unset(RunCMake_TEST_NO_CLEAN)
|
||||
|
||||
# Use a single build tree for a few tests without cleaning.
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RemoveCache-build)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
run_cmake(RemoveCache)
|
||||
file(REMOVE "${RunCMake_TEST_BINARY_DIR}/CMakeCache.txt")
|
||||
run_cmake(RemoveCache)
|
||||
|
||||
Reference in New Issue
Block a user