Merge topic 'file-GENERATE-rerun'
26e98c34
file(GENERATE): Re-run cmake when appropriate.
This commit is contained in:
commit
6a2c7e1e0d
|
@ -80,6 +80,7 @@ void cmGeneratorExpressionEvaluationFile::Generate(const std::string& config,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->Makefile->AddCMakeOutputFile(outputFileName.c_str());
|
||||||
this->Files.push_back(outputFileName);
|
this->Files.push_back(outputFileName);
|
||||||
outputFiles[outputFileName] = outputContent;
|
outputFiles[outputFileName] = outputContent;
|
||||||
|
|
||||||
|
@ -117,6 +118,7 @@ void cmGeneratorExpressionEvaluationFile::Generate()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
this->Makefile->AddCMakeDependFile(this->Input.c_str());
|
||||||
cmSystemTools::GetPermissions(this->Input.c_str(), perm);
|
cmSystemTools::GetPermissions(this->Input.c_str(), perm);
|
||||||
cmsys::ifstream fin(this->Input.c_str());
|
cmsys::ifstream fin(this->Input.c_str());
|
||||||
if(!fin)
|
if(!fin)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
0
|
|
@ -0,0 +1 @@
|
||||||
|
^$
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
file(GENERATE
|
||||||
|
OUTPUT output_file.txt
|
||||||
|
INPUT "${CMAKE_CURRENT_BINARY_DIR}/input_file.txt"
|
||||||
|
)
|
|
@ -61,3 +61,34 @@ if (UNIX AND EXISTS /bin/sh)
|
||||||
message(SEND_ERROR "Generated script did not execute correctly:\n${script_output}\n====\n${script_error}")
|
message(SEND_ERROR "Generated script did not execute correctly:\n${script_output}\n====\n${script_error}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (RunCMake_GENERATOR MATCHES Makefiles)
|
||||||
|
file(MAKE_DIRECTORY "${RunCMake_BINARY_DIR}/ReRunCMake-build/")
|
||||||
|
file(WRITE "${RunCMake_BINARY_DIR}/ReRunCMake-build/input_file.txt" "InitialContent\n")
|
||||||
|
|
||||||
|
set(RunCMake_TEST_NO_CLEAN ON)
|
||||||
|
run_cmake(ReRunCMake)
|
||||||
|
unset(RunCMake_TEST_NO_CLEAN)
|
||||||
|
file(TIMESTAMP "${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt" timestamp ${timeformat})
|
||||||
|
if(NOT timestamp)
|
||||||
|
message(SEND_ERROR "Could not get timestamp for \"${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 1)
|
||||||
|
|
||||||
|
file(WRITE "${RunCMake_BINARY_DIR}/ReRunCMake-build/input_file.txt" "ChangedContent\n")
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} --build "${RunCMake_BINARY_DIR}/ReRunCMake-build/")
|
||||||
|
file(READ "${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt" out_content)
|
||||||
|
|
||||||
|
if(NOT out_content STREQUAL "ChangedContent\n")
|
||||||
|
message(SEND_ERROR "File did not change: \"${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
file(REMOVE "${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt")
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} --build "${RunCMake_BINARY_DIR}/ReRunCMake-build/")
|
||||||
|
|
||||||
|
if (NOT EXISTS "${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt")
|
||||||
|
message(SEND_ERROR "File did not re-generate: \"${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt\"")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue