为什么 Xcode 不使用我的 xcconfig 文件中的构建配置设置?

Why would Xcode not use the build configuration settings from my xcconfig file?

编辑:我认为任何构建配置设置都可能有这个问题,而不仅仅是 OTHER_LDFLAGS 我已经相应地更改了标题并从问题中删除了不相关的细节。

我有一个简单的 Xcode 项目 MyApp。 MyApp.xcconfig 设置为调试构建的配置文件。它只有一行:

OTHER_LDFLAGS = -force_load /foo/bar

虽然它知道 MyApp.xcconfig 设置 OTHER_LDFLAGS Xcode 不想使用该设置。空白 space,而不是 MyApp.xcconfig 中的值,在构建设置中以绿色突出显示(请参阅标记为 "Other Linker Flags" 的底部行):

为什么会这样?从我读过的内容来看,已解决的设置似乎应该是 .xcconfig 文件中的设置。有没有办法做到这一点?

我还发现 xcconfig 中的其他设置确实可以解决。但不是 OTHER_LDFLAGS.

在 MyApp 的 project.pbxproj 文件中,问题构建设置(在本例中为 OTHER_LDFLAGS)被分配了一个空字符串 ""。 Xcode 看到该分配并没有忽略它,而是覆盖了您的 xcconfig 设置。解决方法是删除project.pbxproj.

中的那一行

• 从命令行,在文本编辑器中打开 MyApp.xcodeproj/project.pbxproj,例如Vim。在其中您会看到 Xcode 保留了构建 MyApp 所需的大量信息,包括您在 Xcode 的 UI.

中设置的构建配置设置

• 滚动到 XCBuildConfiguration section。在那里您会看到您的问题构建设置(在本例中为 OTHER_LDFLAGS)被分配了一个空字符串。删除该行并保存文件。

/* Begin XCBuildConfiguration section */
            .
            .
            .
            3729FD9E18B776ECB0A1990 /* Debug */ = {
                    isa = XCBuildConfiguration;
                    baseConfigurationReference = 4820F7A08BBB17C8164733A /* MyApp.xcconfig */;
                    buildSettings = {

                       /// delete this line ///
                         OTHER_LDFLAGS = "";

                    };
                    name = Debug;
            };
            .
            .
            .
/* End XCBuildConfiguration section */