diff options
-rw-r--r-- | Source/cmTarget.cxx | 56 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 3 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0111/CMP0111-Common.cmake | 5 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0111/CMP0111-NEW-stderr.txt | 14 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt | 20 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0111/main.cpp | 3 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0111/module.cpp | 4 |
7 files changed, 65 insertions, 40 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index e076d1e..d26de9c 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -2045,35 +2045,37 @@ std::string cmTarget::ImportedGetFullPath( } if (result.empty()) { - auto message = [&]() -> std::string { - std::string unset; - std::string configuration; - - if (artifact == cmStateEnums::RuntimeBinaryArtifact) { - unset = "IMPORTED_LOCATION"; - } else if (artifact == cmStateEnums::ImportLibraryArtifact) { - unset = "IMPORTED_IMPLIB"; - } - - if (!config.empty()) { - configuration = cmStrCat(" configuration \"", config, "\""); - } + if (this->GetType() != cmStateEnums::INTERFACE_LIBRARY) { + auto message = [&]() -> std::string { + std::string unset; + std::string configuration; + + if (artifact == cmStateEnums::RuntimeBinaryArtifact) { + unset = "IMPORTED_LOCATION"; + } else if (artifact == cmStateEnums::ImportLibraryArtifact) { + unset = "IMPORTED_IMPLIB"; + } - return cmStrCat(unset, " not set for imported target \"", - this->GetName(), "\"", configuration, "."); - }; + if (!config.empty()) { + configuration = cmStrCat(" configuration \"", config, "\""); + } - switch (this->GetPolicyStatus(cmPolicies::CMP0111)) { - case cmPolicies::WARN: - impl->Makefile->IssueMessage( - MessageType::AUTHOR_WARNING, - cmPolicies::GetPolicyWarning(cmPolicies::CMP0111) + "\n" + - message()); - CM_FALLTHROUGH; - case cmPolicies::OLD: - break; - default: - impl->Makefile->IssueMessage(MessageType::FATAL_ERROR, message()); + return cmStrCat(unset, " not set for imported target \"", + this->GetName(), "\"", configuration, "."); + }; + + switch (this->GetPolicyStatus(cmPolicies::CMP0111)) { + case cmPolicies::WARN: + impl->Makefile->IssueMessage( + MessageType::AUTHOR_WARNING, + cmPolicies::GetPolicyWarning(cmPolicies::CMP0111) + "\n" + + message()); + CM_FALLTHROUGH; + case cmPolicies::OLD: + break; + default: + impl->Makefile->IssueMessage(MessageType::FATAL_ERROR, message()); + } } result = cmStrCat(this->GetName(), "-NOTFOUND"); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index a482ed6..4eb3b7f 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3944,7 +3944,8 @@ void cmVisualStudio10TargetGenerator::AddLibraries( if (managedType != cmGeneratorTarget::ManagedType::Native && this->GeneratorTarget->GetManagedType(config) != cmGeneratorTarget::ManagedType::Native && - l.Target->IsImported()) { + l.Target->IsImported() && + l.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) { auto location = l.Target->GetFullPath(config); if (!location.empty()) { ConvertToWindowsSlash(location); diff --git a/Tests/RunCMake/CMP0111/CMP0111-Common.cmake b/Tests/RunCMake/CMP0111/CMP0111-Common.cmake index 564169d..c31e4ba 100644 --- a/Tests/RunCMake/CMP0111/CMP0111-Common.cmake +++ b/Tests/RunCMake/CMP0111/CMP0111-Common.cmake @@ -4,6 +4,7 @@ set(CMAKE_IMPORT_LIBRARY_SUFFIX "placeholder") add_library(unknown_lib UNKNOWN IMPORTED) add_library(static_lib STATIC IMPORTED) add_library(shared_lib SHARED IMPORTED) +add_library(interface_lib INTERFACE IMPORTED) -add_executable(executable main.cpp) -target_link_libraries(executable unknown_lib static_lib shared_lib) +add_library(module MODULE module.cpp) +target_link_libraries(module unknown_lib static_lib shared_lib interface_lib) diff --git a/Tests/RunCMake/CMP0111/CMP0111-NEW-stderr.txt b/Tests/RunCMake/CMP0111/CMP0111-NEW-stderr.txt index ba5d936..91a90e5 100644 --- a/Tests/RunCMake/CMP0111/CMP0111-NEW-stderr.txt +++ b/Tests/RunCMake/CMP0111/CMP0111-NEW-stderr.txt @@ -1,7 +1,17 @@ +^CMake Error in CMakeLists.txt: + IMPORTED_LOCATION not set for imported target "unknown_lib"( configuration + "[^"]+")?. ++ CMake Error in CMakeLists.txt: IMPORTED_LOCATION not set for imported target "static_lib"( configuration - ".+")?. + "[^"]+")?. + CMake Error in CMakeLists.txt: IMPORTED_IMPLIB not set for imported target "shared_lib"( configuration - ".+")?. + "[^"]+")?.( ++ +CMake Error in CMakeLists.txt: + IMPORTED_(LOCATION|IMPLIB) not set for imported target "(unknown|static|shared)_lib"( configuration + "[^"]+")?.)* ++ +CMake Generate step failed. Build files cannot be regenerated correctly.$ diff --git a/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt b/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt index 3abca0a..27af911 100644 --- a/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt +++ b/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt @@ -1,11 +1,11 @@ -CMake Warning \(dev\) in CMakeLists.txt: +^CMake Warning \(dev\) in CMakeLists.txt: Policy CMP0111 is not set: An imported target missing its location property fails during generation. Run "cmake --help-policy CMP0111" for policy details. Use the cmake_policy command to set the policy and suppress this warning. IMPORTED_LOCATION not set for imported target "unknown_lib"( configuration - ".+")?. + "[^"]+")?. This warning is for project developers. Use -Wno-dev to suppress it. + CMake Warning \(dev\) in CMakeLists.txt: @@ -15,7 +15,7 @@ CMake Warning \(dev\) in CMakeLists.txt: warning. IMPORTED_LOCATION not set for imported target "static_lib"( configuration - ".+")?. + "[^"]+")?. This warning is for project developers. Use -Wno-dev to suppress it. + CMake Warning \(dev\) in CMakeLists.txt: @@ -25,5 +25,15 @@ CMake Warning \(dev\) in CMakeLists.txt: warning. IMPORTED_IMPLIB not set for imported target "shared_lib"( configuration - ".+")?. -This warning is for project developers. Use -Wno-dev to suppress it. + "[^"]+")?. +This warning is for project developers. Use -Wno-dev to suppress it.( ++ +CMake Warning \(dev\) in CMakeLists.txt: + Policy CMP0111 is not set: An imported target missing its location property + fails during generation. Run "cmake --help-policy CMP0111" for policy + details. Use the cmake_policy command to set the policy and suppress this + warning. + + IMPORTED_(LOCATION|IMPLIB) not set for imported target "(unknown|static|shared)_lib"( configuration + "[^"]+")?. +This warning is for project developers. Use -Wno-dev to suppress it.)*$ diff --git a/Tests/RunCMake/CMP0111/main.cpp b/Tests/RunCMake/CMP0111/main.cpp deleted file mode 100644 index 5047a34..0000000 --- a/Tests/RunCMake/CMP0111/main.cpp +++ /dev/null @@ -1,3 +0,0 @@ -int main() -{ -} diff --git a/Tests/RunCMake/CMP0111/module.cpp b/Tests/RunCMake/CMP0111/module.cpp new file mode 100644 index 0000000..b82bb31 --- /dev/null +++ b/Tests/RunCMake/CMP0111/module.cpp @@ -0,0 +1,4 @@ +int module() +{ + return 0; +} |