diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index ca24d2d18..acae0b3eb 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -927,10 +927,13 @@ void cmTarget::AddSources(std::vector const& srcs) if(!(src[0] == '$' && src[1] == '<')) { - filename = this->ProcessSourceItemCMP0049(filename); - if (cmSystemTools::GetErrorOccuredFlag()) + if(!filename.empty()) { - return; + filename = this->ProcessSourceItemCMP0049(filename); + if(filename.empty()) + { + return; + } } this->Makefile->GetOrCreateSource(filename); } @@ -998,8 +1001,7 @@ std::string cmTarget::ProcessSourceItemCMP0049(const std::string& s) cmSourceFile* cmTarget::AddSourceCMP0049(const std::string& s) { std::string src = this->ProcessSourceItemCMP0049(s); - - if (cmSystemTools::GetErrorOccuredFlag()) + if(!s.empty() && src.empty()) { return 0; } diff --git a/Tests/RunCMake/Configure/CustomTargetAfterError-result.txt b/Tests/RunCMake/Configure/CustomTargetAfterError-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/Configure/CustomTargetAfterError-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Configure/CustomTargetAfterError-stderr.txt b/Tests/RunCMake/Configure/CustomTargetAfterError-stderr.txt new file mode 100644 index 000000000..7ce7daf6f --- /dev/null +++ b/Tests/RunCMake/Configure/CustomTargetAfterError-stderr.txt @@ -0,0 +1,9 @@ +^CMake Error at CustomTargetAfterError.cmake:1 \(message\): + Error before add_custom_target +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) ++ +CMake Error at CustomTargetAfterError.cmake:3 \(message\): + Error after add_custom_target +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/Configure/CustomTargetAfterError.cmake b/Tests/RunCMake/Configure/CustomTargetAfterError.cmake new file mode 100644 index 000000000..3e264553b --- /dev/null +++ b/Tests/RunCMake/Configure/CustomTargetAfterError.cmake @@ -0,0 +1,3 @@ +message(SEND_ERROR "Error before add_custom_target") +add_custom_target(foo COMMAND echo) +message(SEND_ERROR "Error after add_custom_target") diff --git a/Tests/RunCMake/Configure/RunCMakeTest.cmake b/Tests/RunCMake/Configure/RunCMakeTest.cmake index 5ef0384db..58e1a2a98 100644 --- a/Tests/RunCMake/Configure/RunCMakeTest.cmake +++ b/Tests/RunCMake/Configure/RunCMakeTest.cmake @@ -1,5 +1,6 @@ include(RunCMake) +run_cmake(CustomTargetAfterError) run_cmake(ErrorLogs) run_cmake(FailCopyFileABI)