如何引用在Xcode中使用不同配置构建的依赖项目?
我有两个Xcode项目:如何引用在Xcode中使用不同配置构建的依赖项目?,xcode,xcodebuild,build-dependencies,Xcode,Xcodebuild,Build Dependencies,我有两个Xcode项目:Super和SubSuper具有自定义配置:EnterpriseSub只有默认配置:Debug和ReleaseSuper对Sub具有目标依赖关系。当我使用Enterprise配置构建Super时,Sub使用默认配置构建:Release。这将产生以下层次结构: Build |-Products |-Enterprise-iphoneos |-Super.app |-Release-iphoneos |-libSub.a |-Sub
Super
和Sub
Super
具有自定义配置:Enterprise
Sub
只有默认配置:Debug
和Release
Super
对Sub
具有目标依赖关系。当我使用Enterprise
配置构建Super
时,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
生成的。我控制这两个项目,因此我可以轻松地将企业
配置添加到子
,但我觉得必须有一个神奇的咒语才能使这项工作正常进行。我通过在父项目中使用Xcode配置文件(通常是您的应用程序)解决了完全相同的问题
以下是我采取的步骤:
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
#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"
$(build\u PRODUCTS\u DIR)
是以下内容的串联:
$(BUILD_DIR)/$(CONFIGURATION)-$(PLATFORM_NAME)
/// 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
#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"
然后在应用程序的“项目信息”选项卡中,选择您的配置,使用基本配置进行调试和发布,然后使用特殊配置进行自定义配置。我的一个应用程序中也有类似问题。在Xcode 12.4中,我可以通过将额外配置(我称之为测试临时配置)的系统框架搜索路径设置为
$(BUILD\u DIR)/Release$(EFFECTIVE\u PLATFORM\u NAME)
来解决这个问题
通过选择目标,然后选择“生成设置”选项卡,可以在项目中找到此设置。我建议搜索“系统框架”来找到它。添加路径后,Xcode会将其转换为系统上的实际路径,如我的屏幕截图所示。这也适用于归档
您找到解决方案了吗?我一直在处理同样的问题。不仅仅是我自己的图书馆项目。谢谢!我只是希望有一种更干净的方法。不幸的是,我认为这在归档方面不起作用!啊!