2011-07-15 7 views
6

私はXcodeのにてMyLibraryプロジェクトを追加し、てMyLibraryを追加しました てMyLibrary静的ライブラリにリンクされているのMyAppという名前のアプリを持っているターゲットはMyAppのターゲット依存関係です。 これはうまく動作し、ブレークポイントを設定することができ、私はかなり満足しています。だから私は自分のライブラリーのための2つのビルド構成を持つXcodeの4:依存ターゲットにプリプロセッサマクロを定義

#ifdef DEBUG 
# define MYDebug(msg, ...) NSLog(@"\nDEBUG -> %@ \n(%s:%d)",[NSString stringWithFormat:msg, ## __VA_ARGS__], __PRETTY_FUNCTION__,__LINE__); 
#else 
# define MYDebug(msg, ...) 
#endif 

事は、私が図書館での条件付きログをしたいということです - デバッグは「DEBUG = 1」ではターゲットのビルド設定を持っています「プリプロセッサマクロ」 に - のProd

がなく、てMyLibraryターゲットは、デバッグビルド構成を構築するために設定されています。

スタティックライブラリ(.a)をビルドしてプロジェクトに組み込むとうまく動作します。 しかし、それがターゲット依存関係によって構築されている場合、DEBUGは定義されていないようです(MYDebugは何もログに記録しません)。

また、MyAppのビルド設定でDEBUG = 1を設定しようとしましたが、動作しません。

私が逃した何か、またはそれを行う別の方法がありますか?

+0

はい、何とかあなたは何かを見落としました。あなたがしようとしていることは、かなり基本的で根本的なものです。どのバージョンのXcodeを使用していますか?あなたのターゲットを「クリーンアップ」(Apple-Shift-k)しようとしましたか? – hooleyhoop

+0

XCode 4.これは基本的かもしれませんが、私は図書館の開発には新しく、図書館が別のプロジェクトからビルドされている場合を除いて、依存関係として機能するので混乱します。私はきれいにしようとしますが、私はそれが助けになるとは思わない。 – Julien

+0

私は、これがアウトの問題で動作することを期待するのが完全に正しいことを意味します。清掃はしばしば役に立ちますので、お知らせください。 – hooleyhoop

答えて

8

"DEBUG = 1"の代わりに "DEBUG"にする必要があります。また、オブジェクトの割り当て(NSStringの、など)を必要とするマクロを使用するには、@"などのような文字のほとんどをエスケープする必要があります。..

ここでのXcode 4.1から鉱山の作業プロジェクトのスクリーンショットです:

enter image description here

+0

お返事ありがとうございます。 DEBUG = 1がDEBUGの間に動作しない理由はわかりません。そして、文字のエスケープについては、問題があるようにも、私はライブラリを構築するときに正常に動作しない – Julien

関連する問題