瀏覽代碼

Merge topic 'xcode-inherited-params'

dfaf55fbfd Xcode: add extra '$(inherited)' entries using InheritBuildSettingAttribute.

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6077
Brad King 4 年之前
父節點
當前提交
ce19e38151

+ 3 - 0
Source/cmGlobalXCodeGenerator.cxx

@@ -4318,6 +4318,9 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
     this->InheritBuildSettingAttribute(t, "SYSTEM_FRAMEWORK_SEARCH_PATHS");
     this->InheritBuildSettingAttribute(t, "SYSTEM_FRAMEWORK_SEARCH_PATHS");
     this->InheritBuildSettingAttribute(t, "LIBRARY_SEARCH_PATHS");
     this->InheritBuildSettingAttribute(t, "LIBRARY_SEARCH_PATHS");
     this->InheritBuildSettingAttribute(t, "LD_RUNPATH_SEARCH_PATHS");
     this->InheritBuildSettingAttribute(t, "LD_RUNPATH_SEARCH_PATHS");
+    this->InheritBuildSettingAttribute(t, "GCC_PREPROCESSOR_DEFINITIONS");
+    this->InheritBuildSettingAttribute(t, "OTHER_CFLAGS");
+    this->InheritBuildSettingAttribute(t, "OTHER_LDFLAGS");
   }
   }
 
 
   if (this->XcodeBuildSystem == BuildSystem::One) {
   if (this->XcodeBuildSystem == BuildSystem::One) {

+ 49 - 0
Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake

@@ -0,0 +1,49 @@
+set(xcProjectFile "${RunCMake_TEST_BINARY_DIR}/InheritedParameters.xcodeproj/project.pbxproj")
+if(NOT EXISTS "${xcProjectFile}")
+  set(RunCMake_TEST_FAILED "Project file ${xcProjectFile} does not exist.")
+  return()
+endif()
+
+set(found_inherited_GCC_PREPROCESSOR_DEFINITIONS 1)
+set(found_inherited_OTHER_CFLAGS 1)
+set(found_inherited_OTHER_LDFLAGS 1)
+
+file(STRINGS "${xcProjectFile}" lines)
+foreach(line IN LISTS lines)
+
+    if(line MATCHES [[GCC_PREPROCESSOR_DEFINITIONS]])
+        if(NOT line MATCHES [["\$\(inherited\)"]])
+            string(APPEND relevant_lines "  ${line}\n")
+            set(found_inherited_GCC_PREPROCESSOR_DEFINITIONS 0)
+        endif()
+    endif()
+
+    if(line MATCHES [[OTHER_CFLAGS]])
+        if(NOT line MATCHES [["\$\(inherited\)"]])
+            string(APPEND relevant_lines "  ${line}\n")
+            set(found_inherited_OTHER_CFLAGS 0)
+        endif()
+    endif()
+
+    if(line MATCHES [[OTHER_LDFLAGS]])
+        if(NOT line MATCHES [["\$\(inherited\)"]])
+            string(APPEND relevant_lines "  ${line}\n")
+            set(found_inherited_OTHER_LDFLAGS 0)
+        endif()
+    endif()
+
+endforeach()
+
+if(NOT found_inherited_GCC_PREPROCESSOR_DEFINITIONS)
+  string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for GCC_PREPROCESSOR_DEFINITIONS in\n  ${xcProjectFile}\n")
+endif()
+if(NOT found_inherited_OTHER_CFLAGS)
+  string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for OTHER_CFLAGS in\n  ${xcProjectFile}\n")
+endif()
+if(NOT found_inherited_OTHER_LDFLAGS)
+  string(APPEND RunCMake_TEST_FAILED "Found missing inherited value for OTHER_LDFLAGS in\n  ${xcProjectFile}\n")
+endif()
+
+if(RunCMake_TEST_FAILED)
+  string(APPEND RunCMake_TEST_FAILED "Relevant lines include\n${relevant_lines}")
+endif()

+ 8 - 0
Tests/RunCMake/XcodeProject/InheritedParameters.cmake

@@ -0,0 +1,8 @@
+enable_language(C)
+
+add_compile_definitions(TEST_INHERITTEST)
+string(APPEND CMAKE_C_FLAGS " -DTESTFLAG=\\\"TEST_INHERITTEST\\\"")
+
+add_executable(inherit_test main.c)
+
+target_link_libraries(inherit_test PRIVATE "TEST_INHERITTEST")

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

@@ -4,6 +4,7 @@ run_cmake(ExplicitCMakeLists)
 run_cmake(ImplicitCMakeLists)
 run_cmake(ImplicitCMakeLists)
 run_cmake(InterfaceLibSources)
 run_cmake(InterfaceLibSources)
 run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
 run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
+run_cmake(InheritedParameters)
 
 
 run_cmake(XcodeFileType)
 run_cmake(XcodeFileType)
 run_cmake(XcodeAttributeLocation)
 run_cmake(XcodeAttributeLocation)