diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4def88905..20d3208cf 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1748,9 +1748,12 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) else if (prop == "LINK_LIBRARIES") { this->Internal->LinkImplementationPropertyEntries.clear(); - cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); - cmValueWithOrigin entry(value, lfbt); - this->Internal->LinkImplementationPropertyEntries.push_back(entry); + if (value) + { + cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); + cmValueWithOrigin entry(value, lfbt); + this->Internal->LinkImplementationPropertyEntries.push_back(entry); + } } else if (prop == "SOURCES") { @@ -1834,9 +1837,12 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, } else if (prop == "LINK_LIBRARIES") { - cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); - cmValueWithOrigin entry(value, lfbt); - this->Internal->LinkImplementationPropertyEntries.push_back(entry); + if (value) + { + cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); + cmValueWithOrigin entry(value, lfbt); + this->Internal->LinkImplementationPropertyEntries.push_back(entry); + } } else if (prop == "SOURCES") { diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e406..81029cdcc 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -146,6 +146,7 @@ add_RunCMake_test(list) add_RunCMake_test(message) add_RunCMake_test(project) add_RunCMake_test(return) +add_RunCMake_test(set_property) add_RunCMake_test(string) add_RunCMake_test(try_compile) add_RunCMake_test(try_run) diff --git a/Tests/RunCMake/set_property/CMakeLists.txt b/Tests/RunCMake/set_property/CMakeLists.txt new file mode 100644 index 000000000..18dfd2686 --- /dev/null +++ b/Tests/RunCMake/set_property/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/set_property/LINK_LIBRARIES.cmake b/Tests/RunCMake/set_property/LINK_LIBRARIES.cmake new file mode 100644 index 000000000..994e874ef --- /dev/null +++ b/Tests/RunCMake/set_property/LINK_LIBRARIES.cmake @@ -0,0 +1,7 @@ +add_custom_target(CustomTarget) +set_property(TARGET CustomTarget PROPERTY LINK_LIBRARIES) +set_property(TARGET CustomTarget APPEND PROPERTY LINK_LIBRARIES) +get_property(val TARGET CustomTarget PROPERTY LINK_LIBRARIES) +if (NOT "${val}" STREQUAL "") + message(FATAL_ERROR "LINK_LIBRARIES value is '${val}' but should be ''") +endif() diff --git a/Tests/RunCMake/set_property/RunCMakeTest.cmake b/Tests/RunCMake/set_property/RunCMakeTest.cmake new file mode 100644 index 000000000..54e63f75c --- /dev/null +++ b/Tests/RunCMake/set_property/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(LINK_LIBRARIES)