Xcodeを使用して古いコードを作成し、SDKROOT=/Developer/SDKs/MacOSX"${Host_VERSION}".sdk/
を指定しています
システムにプリインストール(?)されている最新のSDKにSDKROOTを指定したい。例えば私はすでに10.8
を使用しており、SDKROOT
を-syslibrootで指定したいのですが、/Developer/SDKs/
にはそのようなSDKはありません。 SDK_VERSION == Host_VERSION
の場合、syslibrootを完全に無視する必要がありますか?
新しいXcodeバージョンには、Xcode.appバンドル内にSDKがあります。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
次のコマンドを実行して、インストールされているSDKのリストとそのパスを取得します
xcodebuild -sdk -version
コマンドラインから。
「コマンドラインツール」(Xcode設定->ダウンロード->コンポーネント)をインストールした場合、「-syslibroot」なしでコンパイルすることは、最新のSDKに対してコンパイルすることと同じです。
「コマンドラインツール」パッケージのヘルプを参照してください。
このパッケージをダウンロードすると、コアコマンドラインツールとシステムヘッダーのコピーが、LLVMコンパイラ、リンカー、ビルドツールなどのシステムフォルダーにインストールされます。
xcodebuild -version -sdk macosx10.7 Path
を使用すると、OS X 10.7 SDKへのパスを取得できます。必要に応じて、10.7を${SDK_VERSION}
または${Host_VERSION}
に置き換えることができます。 OS Xのバージョンを取得するコマンドがないことを知っています。これは、現在実行中のOS Xのバージョンと一致するSDKへのパスを取得するために使用できます。
注:xcodebuild
が機能するためには、ユーザーはxcode-select
を正しく構成する必要があります(例:xcode-select -switch /Application/Xcode.app
)。
別の stackoverflowの質問 で述べたように:
xcrun --sdk macosx --show-sdk-path