0

Snow Leopard、XCode 3.2.6に基づいて構築し、10.5 SDK 32/64ビット、INTELのみを対象とするコードベースがあります。正常に動作します。これは仮想マシンで行います。

これでGCC 4.7.1、Mountain Lion、XCode 4.4ツールをコンパイルして作業し、必要なすべてのライブラリ、依存関係を設定できるようになりました。

XCodeからGCCに移行して、10.5 SDKをターゲットにしたいと思います。そうしないと、10.6SDKでも問題ありません。

MakeFileを作成する必要がありますか?XCodeからエクスポートする方法はありますか?MakeFileを最初から作成することについてはよくわかりません。

-mmacosx-version-min=10.5gccコマンドに追加できることと、64ビットも指定する必要があることを知っています。

4

2 に答える 2

3

あなたは複数の異なることを混乱させています。

Xcodeからvimに切り替えたい場合は、…それを行うことができます。Xcodeコマンドラインツールをインストールした場合は、gcc、makeなどがすべてパス上にあり、それらは正常に機能し、Xcodeについて考える必要はまったくありません。実際、Xcodeの残りの部分がなくても、コマンドラインツールをインストールすることもできます。

Xcodeツールチェーンから別のツールチェーンに切り替える場合、またはハイブリッドを使用する場合は、それを行うことができます。gcc4.7.1をインストールしました。OK、gcc_selectまたはを使用するかexport CC=/usr/local/bin/gcc-4.7.1、makefileにパスをハードコーディングします。他のPOSIXプラットフォームに複数のツールチェーンがあるのと同じです。

xcodebuildXcodeを実行せずにXcodeプロジェクトをビルドする場合は、コマンドラインから使用できます。

既存のプロジェクトをXcodeからMakefile(またはcmakeなど)に変換する場合は、手動で行う必要があります。プロジェクトが非常に複雑であるか、Xcode固有の多くのことを行わない限り、通常はそれほど難しいことではありません。ビルド出力から、Xcodeが実行している実際のコマンドをすべて確認できます。

Makefileの作成方法を学びたい場合は、優れたチュートリアルがたくさんあります。しかし、最初の質問は、なぜですか?cmakeのようなもっと簡単なことを学ぶことは受け入れられますか、それともここでの全体の目標はmakeについて学ぶことですか?

SDKベースの開発を行い、パス-archし、他のApple固有の拡張機能をgcc 4.7.1でgccに使用したい場合は、できません。gccのこれらの拡張機能は、新しいバージョンに移植されていません。自分で移植する仕事をしたいのなら、きっと気に入ってくれる人もいると思いますが、それは大変な作業です。

また、gcc 4.7.1を使用して他の人のコードを作成したい場合は、そのままでは機能しない可能性があります。ほとんどのMac固有のオープンソースプロジェクトはApplegcc拡張機能に依存しており、ほとんどのクロスプラットフォームオープンソースプロジェクトには、Macを使用していることを検出し、Xcodeコマンドラインツールを備え、それらに依存するように設定するautotoolsセットアップがあります。拡張機能もあります。

では、これらのうちどれに問題がありますか?


もう一つ:

設定は、macosx-version-minSDKとはまったく異なり、補完的なものです。

SDKをたとえば10.5に設定するには、他のディレクトリ(C ++ stdlibなど)に追加のフラグを渡す必要があります。-isystem $PATH_TO_10_5_SDK/usr/includeまた、場合によってはリンカーにフラグを渡し、場合によってはコンパイラやリンカーにフラグを渡す必要があります。-isystem/usr-L-F

SDKも必要です。10.5 SDKを入手する唯一の方法は、Xcode 3.2.6以前を使用することです。これは、MountainLionにインストールすることさえできないと思います。また、Xcode3.2.6の10.5SDKは、10.6以降のビルドシステムでの作業方法を認識していないため、手動でハックする必要があります(主に、10.7と10.8を同じように扱う一連のシンボリックリンクを作成します)。 10.6)。また、Apple以外のgccを使用している場合は、コンパイラ固有のヘッダー(特にC ++の場合)などのさまざまなものを見つけようとすると混乱するため、さらにハックする必要があります。

なんでこんなに難しいの?あなたがそれをする必要はほとんどないので、そしてアップルはあなたがそうしないことを特に勧めます。それは、彼らが10.4日間に物事を行うことを推奨していた方法から残っていますが、それが存在するからといって、それを使用する必要があるという意味ではありません。

10.5で実行されるコードをビルドする正しい方法は、-macosx-version-min=10.5。OSに一致するSDK(または、次のOSバージョンで機能を使用できるようにする場合は、新しいSDKでも可能)で使用できます。実際に使用する必要があります。この場合も、このフラグはclangおよびApple拡張gccでのみサポートされる可能性があります。ただし、SDKのすべてが下位互換モードで魔法のように機能するようになります。もちろん、10.6以降で追加された新機能を除いて、10.5マシンでフルスクリーンモードにしようとすると、例外が発生するか、クラッシュします。Appleには、どのAPIがどのバージョンで追加されたか、および各種類のAPI(Cocoa、CoreFoundation、およびPOSIX)をチェックする正しい方法に関する非常に優れたドキュメントがあります。そしてもちろん、テストするには実際の10.5マシン(またはVM)が必要です。また、C ++ stdlib(10.5のみ)にはいくつかのバグがあります。また、OpenSSLのように、配布用にシステムコピーに対してビルドすることをAppleが推奨しなくなった少数のライブラリもあります。ただし、10.5SDKを使用してビルドするよりもはるかに簡単です。そして、それはAppleが明示的に推奨していることです。

于 2012-08-14T19:42:34.400 に答える
2

Xcode での作業を避けたいが、それ以外は同じ方法でビルドしたい場合は、コマンドライン ツール を使用できますxcodebuild。これは、Xcode と同じ方法で Xcode プロジェクトをビルドします。

于 2012-08-14T16:31:28.580 に答える