Browse Source

Merge topic 'vs-iface-include-dirs'

53aabe9817 VS: Fix assertion failure on INCLUDE_DIRECTORIES in INTERFACE libraries

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6411
Brad King 4 years ago
parent
commit
99d3e20999

+ 3 - 0
Source/cmVisualStudio10TargetGenerator.cxx

@@ -4091,6 +4091,9 @@ void cmVisualStudio10TargetGenerator::WriteMidlOptions(
   if (this->ProjectType == csproj) {
     return;
   }
+  if (this->GeneratorTarget->GetType() > cmStateEnums::UTILITY) {
+    return;
+  }
 
   // This processes *any* of the .idl files specified in the project's file
   // list (and passed as the item metadata %(Filename) expressing the rule

+ 7 - 0
Tests/RunCMake/InterfaceLibrary/IncludeDirectories.cmake

@@ -0,0 +1,7 @@
+cmake_policy(SET CMP0076 NEW)
+include_directories(Inc1 Inc2)
+add_library(iface INTERFACE)
+target_sources(iface PRIVATE iface.c)
+# Ensure the INCLUDE_DIRECTORIES property is populated.
+# Since interface libraries do not actually compile anything, this should be ignored.
+set_property(TARGET iface APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/Inc3 ${CMAKE_CURRENT_SOURCE_DIR}/Inc4)

+ 1 - 0
Tests/RunCMake/InterfaceLibrary/RunCMakeTest.cmake

@@ -34,3 +34,4 @@ run_WithSources(ConfigSources "build1:iface")
 run_WithSources(EmptySources "build1:iface" "build2:iface2,merge")
 run_WithSources(ExcludeFromAll "build1" "build2:iface" "build3:iface2,merge")
 run_WithSources(PublicSources "build1" "build2:iface" "build3:iface2,merge")
+run_WithSources(IncludeDirectories "build1:iface")