Browse Source

VERIFY_INTERFACE_HEADER_SETS: Finalize compile info for verify targets

Fixes: #23732
Kyle Edwards 3 years ago
parent
commit
27fd172d8d

+ 6 - 0
Source/cmGeneratorTarget.cxx

@@ -16,6 +16,7 @@
 #include <utility>
 
 #include <cm/memory>
+#include <cm/optional>
 #include <cm/string_view>
 #include <cmext/algorithm>
 #include <cmext/string_view>
@@ -8616,6 +8617,11 @@ bool cmGeneratorTarget::AddHeaderSetVerification()
             verifyTarget->SetProperty("AUTOUIC", "OFF");
             verifyTarget->SetProperty("DISABLE_PRECOMPILE_HEADERS", "ON");
             verifyTarget->SetProperty("UNITY_BUILD", "OFF");
+            cm::optional<std::map<std::string, cmValue>>
+              perConfigCompileDefinitions;
+            verifyTarget->FinalizeTargetCompileInfo(
+              this->Makefile->GetCompileDefinitionsEntries(),
+              perConfigCompileDefinitions);
           }
 
           if (fileCgesContextSensitive) {

+ 2 - 0
Tests/RunCMake/VerifyHeaderSets/VerifyHeaderSets.cmake

@@ -1,5 +1,7 @@
 enable_language(C CXX)
 
+add_compile_definitions(TEST_ADD_COMPILE_DEFINITIONS)
+
 set_property(SOURCE a.h PROPERTY LANGUAGE C)
 set_property(SOURCE dir/c.h PROPERTY LANGUAGE C)
 set_property(SOURCE dir/cxx.h PROPERTY LANGUAGE CXX)

+ 4 - 0
Tests/RunCMake/VerifyHeaderSets/a.h

@@ -2,4 +2,8 @@
 #  error "TEST_A_H defined"
 #endif
 
+#ifndef TEST_ADD_COMPILE_DEFINITIONS
+#  error "TEST_ADD_COMPILE_DEFINITIONS not defined"
+#endif
+
 extern void a_h(void);