如何使用带有额外构建标志的 SPM 生成 Xcode 项目?
How to generate Xcode project using SPM with extra build flags?
我正在创建一个依赖于 macOS 上的 OpenSSL 的包。要使用 SPM 构建包,我需要向它传递一些 build/linker 标志:
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
有什么建议吗?
要创建带有附加标志的 Xcode 项目,我们需要执行以下 3 个步骤:
第 1 步 - 获取 compiler/linker 标志和等效 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
无需任何额外标志即可使用。
我正在创建一个依赖于 macOS 上的 OpenSSL 的包。要使用 SPM 构建包,我需要向它传递一些 build/linker 标志:
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
有什么建议吗?
要创建带有附加标志的 Xcode 项目,我们需要执行以下 3 个步骤:
第 1 步 - 获取 compiler/linker 标志和等效 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
无需任何额外标志即可使用。