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

Swift 如何使用带有额外构建标志的SPM生成Xcode项目?,swift,xcode,macos,swift-package-manager,xcodeproj,Swift,Xcode,Macos,Swift Package Manager,Xcodeproj,我正在创建一个依赖于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

我正在创建一个依赖于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工作流也不起作用,因为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

有什么建议吗?

要创建带有附加标志的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项目的构建是开箱即用的,可以在不使用任何额外标志的情况下使用Xcode构建。

要创建具有额外标志的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项目的构建是开箱即用的,可以在不使用任何额外标志的情况下使用Xcode构建