ソースを参照

Merge topic 'export-properties-undefined'

dbd3e2c53d EXPORT_PROPERTIES: Prevent null dereference for undefined property
b88bf6796e EXPORT_PROPERTIES: Add test for an undefined property

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2294
Craig Scott 7 年 前
コミット
6b1089399a

+ 5 - 0
Source/cmExportFileGenerator.cxx

@@ -1174,6 +1174,11 @@ bool cmExportFileGenerator::PopulateExportProperties(
         return false;
       }
       auto propertyValue = targetProperties.GetPropertyValue(prop);
+      if (propertyValue == nullptr) {
+        // Asked to export a property that isn't defined on the target. Do not
+        // consider this an error, there's just nothing to export.
+        continue;
+      }
       std::string evaluatedValue = cmGeneratorExpression::Preprocess(
         propertyValue, cmGeneratorExpression::StripAllGeneratorExpressions);
       if (evaluatedValue != propertyValue) {

+ 11 - 0
Tests/RunCMake/export/ExportPropertiesUndefined.cmake

@@ -0,0 +1,11 @@
+enable_language(CXX)
+add_library(foo empty.cpp)
+set_target_properties(foo PROPERTIES
+  EXPORT_PROPERTIES "NotDefinedProp"
+)
+export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/foo.cmake")
+install(TARGETS foo EXPORT fooExport
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib
+)

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

@@ -8,3 +8,4 @@ run_cmake(NoExportSet)
 run_cmake(ForbiddenToExportInterfaceProperties)
 run_cmake(ForbiddenToExportImportedProperties)
 run_cmake(ForbiddenToExportPropertyWithGenExp)
+run_cmake(ExportPropertiesUndefined)