gpt4 book ai didi

xcode - 添加自定义 macosx.internal SDK

转载 作者:行者123 更新时间:2023-12-05 07:31:44 25 4
gpt4 key购买 nike

主要目标:我想要一个既可以使用标准 SDK 进行编译,又可以通过将正确的 SDK 传递到 xcodebuild 来使用经过修改的用于内核开发的 SDK 进行编译的设置。

构建 MacOS X 内核时,必须修改默认的 SDK。然后,这些修改可能会干扰正常的应用程序开发。

Apple 显然有一个 macosx.internal SDK 用于此目的(可能还有其他各种目的)。我能以某种方式劫持 SDKROOT=macosx.internal 设置吗?

只需将 macosx.internalmacosx.internal.sdk 文件夹放入 $(xcode-select -p)Platforms/MacOSX.platform/Developer/SDK 似乎无法解决问题。

我错过了什么吗?

最佳答案

您可以尝试使用 xnu-make ,一个构建 xnu 的项目。它用作独立的构建环境并自动创建 SDK 的本地副本,而不是修改默认副本。请参阅其 Makefile 中的以下行,这些行用于复制 SDK 并在 Xcode 中创建符号链接(symbolic link),以便可以使用:

MACOSX_SDK = MacOSX10.11
...
#make a copy of the current sdk to the build directory and create a symlink in the Xcode SDKs directory
XCODE_SDKS_DIR := $(shell xcrun -sdk macosx --show-sdk-platform-path)/Developer/SDKs
MACOSX_SDK_SRC := $(XCODE_SDKS_DIR)/$(MACOSX_SDK).sdk
MACOSX_SDK_DST := $(CURDIR)/build/sdk/$(MACOSX_SDK)-xnu.sdk
MACOSX_SDK_LNK := $(XCODE_SDKS_DIR)/$(shell basename $(MACOSX_SDK_DST))
MACOSX_SDK_XNU := $(shell echo $(MACOSX_SDK) | tr A-Z a-z)-xnu

sdk:
ifeq ($(shell test -d $(MACOSX_SDK_SRC); echo $$?), 1)
$(error "The SDK $(MACOSX_SDK) cannot be found, make sure that the latest Xcode version is installed")
endif
mkdir -p $(MACOSX_SDK_DST)
cd $(MACOSX_SDK_SRC) && rsync -rtpl . $(MACOSX_SDK_DST)
plutil -replace CanonicalName -string $(MACOSX_SDK_XNU) $(MACOSX_SDK_DST)/SDKSettings.plist
rm -f $(MACOSX_SDK_LNK)
ln -sf $(MACOSX_SDK_DST) $(MACOSX_SDK_LNK)

我稍微更新了 Makefile 以构建 MacOSX10.13,并将 .gitmodules 替换为更新的 xnu 代码源和支持库,但是一旦我做了这些事情,就构建了内核而无需修改本地 SDK。

如果您不想使用 xnu-make 项目,您也可以简单地将上面的行改编成用于复制 SDK 的脚本。

关于xcode - 添加自定义 macosx.internal SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com