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

有什么建议么?

4

1 回答 1

6

要创建带有附加标志的 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标志 withgenerate-xcodeproj使项目使用配置文件。

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

现在 Xcode 项目开箱xcodebuild即用,无需任何额外标志即可使用。

于 2018-03-02T14:33:51.190 回答