VS: Generate IntDir property for INTERFACE libraries

This prevents MSBuild from complaining with warning MSB8028.

Fixes #23043
This commit is contained in:
Jonas Fierlings
2022-07-08 13:06:48 +02:00
parent c4cdd7a24d
commit d99d33d749
2 changed files with 10 additions and 1 deletions

View File

@@ -2930,7 +2930,7 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
Elem& e0)
{
cmStateEnums::TargetType ttype = this->GeneratorTarget->GetType();
if (ttype > cmStateEnums::GLOBAL_TARGET) {
if (ttype > cmStateEnums::INTERFACE_LIBRARY) {
return;
}
if (this->ProjectType == VsProjectType::csproj) {

View File

@@ -5,6 +5,7 @@ if(NOT EXISTS "${vcProjectFile}")
endif()
set(found_iface_h 0)
set(found_int_dir 0)
file(STRINGS "${vcProjectFile}" lines)
foreach(line IN LISTS lines)
if(line MATCHES "<([A-Za-z0-9_]+) +Include=.*iface\\.h")
@@ -19,7 +20,15 @@ foreach(line IN LISTS lines)
endif()
set(found_iface_h 1)
endif()
if(line MATCHES "^ *<IntDir [^<>]+>[^<>]+</IntDir>")
set(found_int_dir 1)
endif()
endforeach()
if(NOT found_iface_h)
set(RunCMake_TEST_FAILED "iface.h not referenced in\n ${vcProjectFile}")
return()
endif()
if(NOT found_int_dir)
set(RunCMake_TEST_FAILED "No references to IntDir in\n ${vcProjectFile}")
return()
endif()