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;
|
||||
}
|
||||
|
||||
this->Makefile->AddCMakeOutputFile(outputFileName.c_str());
|
||||
this->Files.push_back(outputFileName);
|
||||
outputFiles[outputFileName] = outputContent;
|
||||
|
||||
|
@ -117,6 +118,7 @@ void cmGeneratorExpressionEvaluationFile::Generate()
|
|||
}
|
||||
else
|
||||
{
|
||||
this->Makefile->AddCMakeDependFile(this->Input.c_str());
|
||||
cmSystemTools::GetPermissions(this->Input.c_str(), perm);
|
||||
cmsys::ifstream fin(this->Input.c_str());
|
||||
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}")
|
||||
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