如何使用具有额外构建标志的SPM生成Xcode项目?

问题描述 投票:1回答:1

我正在创建一个依赖于macOS上的OpenSSL的包。要使用SPM构建包,我需要传递一些构建/链接器标志:

swift build -Xlinker -L/usr/local/opt/openssl/lib -Xcc -I/usr/local/opt/openssl/include

问题是,当我使用SPM构建我的xcode项目时,我无法传递标志。从理论上讲,我认为以下方法可行,

swift package generate-xcodeproj -Xlinker -L/usr/local/opt/openssl/lib -Xcc -I/usr/local/opt/openssl/include

但它没有,一旦生成Xcode项目,要构建它,我需要进入设置并更新相应的路径。

这显然是丑陋的,并且它也不适用于正确的CI工作流程,这取决于当前仅由xcode项目而不是SPM支持的功能。

我已经尝试在执行命令行xcodebuild时传递这些值,如下所示,但这也不起作用。

xcodebuild -project MyProj.xcodeproj -scheme MyProjScheme HEADER_SEARCH_PATHS=/usr/local/opt/openssl/include  LIBRARY_SEARCH_PATHS=/usr/local/opt/openssl/lib  build

有什么建议?

swift xcode macos swift-package-manager xcodeproj
1个回答
4
投票

要使用其他标志创建Xcode项目,我们需要执行以下3个步骤:

步骤1 - 获取编译器/链接器标志与等效xcode设置之间的正确映射。在这种情况下,

-Xlinker -L/usr/local/opt/openssl/lib -Xcc -I/usr/local/opt/openssl/include

相当于

HEADER_SEARCH_PATHS=/usr/local/opt/openssl/include
LIBRARY_SEARCH_PATHS=/usr/local/opt/openssl/lib

第2步 - 创建一个.xcconfig文件。例如,

$ less openssl.xcconfig 

HEADER_SEARCH_PATHS = /usr/local/opt/openssl/include 
LIBRARY_SEARCH_PATHS = /usr/local/opt/openssl/lib

第3步 - 使用--xcconfig-overrides标志和generate-xcodeproj使项目使用配置文件。

 swift package generate-xcodeproj --xcconfig-overrides openssl.xcconfig

现在Xcode项目开箱即用,xcodebuild可以在没有任何额外标志的情况下使用。

© www.soinside.com 2019 - 2024. All rights reserved.