我正在创建一个依赖于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
有什么建议吗?
答案 0 :(得分: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
可以在没有任何额外标志的情况下使用。