3

我有两个 Xcode 项目:SuperSub. Super有一个自定义配置:Enterprise. Sub只有默认配置:DebugRelease. Super目标依赖于Sub. 当我Super使用Enterprise配置Sub构建时,使用其默认配置构建:Release. 这会产生以下层次结构:

Build
|-Products
  |-Enterprise-iphoneos
    |-Super.app
  |-Release-iphoneos
    |-libSub.a
    |-Sub
      |-Sub.h

Clang 无法构建,因为libSub.a并且Sub/Sub.h通常与 位于同一目录中Super.app,但由于Sub使用Release配置而不是Enterprise. 我控制这两个项目,所以我可以轻松地添加Enterprise配置Sub,但我觉得必须有一个Xcode Build Settings的神奇咒语才能使这项工作。

4

2 回答 2

0

通过在我的父项目(通常是您的应用程序)中使用 Xcode 配置文件,我已经解决了完全相同的问题。

这些是我采取的步骤:

  1. 通过 New > Other > Configuration File 在 Xcode 中创建一个基本配置文件。

  2. 编写你的基本xcconfig文件,我的看起来有点像这样:

    /// Configure Search Paths
    HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/include" "$(BUILT_PRODUCTS_DIR)/usr/local/include"
    LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../Externals/Libraries/GoogleAnalytics"
    
    /// Linker flags
    OTHER_LDFLAGS=-ObjC -all_load
    
  3. 这里要注意的是,这$(BUILT_PRODUCTS_DIR)是以下内容的串联:

    $(BUILD_DIR)/$(CONFIGURATION)-$(PLATFORM_NAME)
    
  4. 为自定义配置编写专门的配置。我创建了一个复制 Release 的 Ad Hoc 配置,因此我的搜索路径现在如下所示:

    #include "BaseConfig.xcconfig"
    
    /// Ad Hoc search paths
    HEADER_SEARCH_PATHS = "$(BUILD_DIR)/Release-$(PLATFORM_NAME)/include" "$(BUILD_DIR)/Release-$(PLATFORM_NAME)/usr/local/include"
    LIBRARY_SEARCH_PATHS = "$(BUILD_DIR)/Release-$(PLATFORM_NAME)" "$(SRCROOT)/../Externals/Sources/GoogleAnalytics"
    

然后在您的应用程序项目的信息选项卡中选择您的配置,使用基本配置进行调试和发布,然后为您的自定义配置使用特殊配置。

于 2013-04-30T21:55:35.417 回答
0

我在我的一个应用程序中遇到了类似的问题。在 Xcode 12.4 中,我可以通过将额外配置(我称之为 Ad Hoc for Test)的系统框架搜索路径$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)设置为.

通过选择 Target,然后选择 Build Settings 选项卡,可以在项目中找到此设置。我建议搜索“系统框架”来找到它。添加路径后,Xcode 会将其转换为系统上的实际路径,如我的屏幕截图所示。这也适用于归档。

构建设置示例

于 2021-04-06T21:47:31.307 回答