mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-30 18:29:37 -06:00
Xcode: add extra '$(inherited)' entries using InheritBuildSettingAttribute.
These have been added to: GCC_PREPROCESSOR_DEFINITIONS OTHER_CFLAGS OTHER_LDFLAGS This is to allow Cocoapods to work correctly as it uses xcconfig files to alter build settings in Xcode, and requires these build settings to inherit from their parent, not overwrite.
This commit is contained in:
@@ -4318,6 +4318,9 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
||||
this->InheritBuildSettingAttribute(t, "SYSTEM_FRAMEWORK_SEARCH_PATHS");
|
||||
this->InheritBuildSettingAttribute(t, "LIBRARY_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) {
|
||||
|
||||
49
Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake
Normal file
49
Tests/RunCMake/XcodeProject/InheritedParameters-check.cmake
Normal file
@@ -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
Tests/RunCMake/XcodeProject/InheritedParameters.cmake
Normal file
8
Tests/RunCMake/XcodeProject/InheritedParameters.cmake
Normal file
@@ -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")
|
||||
@@ -4,6 +4,7 @@ run_cmake(ExplicitCMakeLists)
|
||||
run_cmake(ImplicitCMakeLists)
|
||||
run_cmake(InterfaceLibSources)
|
||||
run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
|
||||
run_cmake(InheritedParameters)
|
||||
|
||||
run_cmake(XcodeFileType)
|
||||
run_cmake(XcodeAttributeLocation)
|
||||
|
||||
Reference in New Issue
Block a user