5

私はまだ統合開発環境のファンではありませんが、偏見を克服して Xcode を学ぼうとしています。(次は Eclipse/CDT です。昨年試したときもうまくいきませんでしたが、それは別の問題です。)

小さなライブラリ (の一部) になる新しいプロジェクトで新しいコードを書いています。ユニットテストもしたいです。(共有) ライブラリを構築していることを Xcode に説明する方法はありますが、共有ライブラリには含まれない別のソースからコンパイルされたテスト プログラムでも使用したいと考えています。

ソースコード:

  • atom.c
  • atom.h
  • test-atom.c

生成されたファイル:

  • libatom.dylib
  • テストアトム

ライブラリにコンパイルしましたatom.c。ライブラリとリンクするためにatom.hビルドできるように、物事を整理する方法がわかりません。test-atomそれを整理したら、test-atom.c というテスト サポート コード用のライブラリを追加すると、Xcode の制御下にはまだありませんが、比較的簡単になると思います。

FWIW、私は主に Objective C ではなく C で作業しています。

4

2 に答える 2

4

プロジェクトには 2 つのターゲットが必要です。Xcode のターゲットは、ライブラリ、実行可能ファイル、またはその他の出力である製品を生成します。

したがって、作成するターゲットlibatom.dylibが既に設定されていると思われますがtest-atom、ライブラリをテストするために実行する実行可能ファイルを作成する別のコマンドライン実行可能ターゲットがあります。

ターゲットを追加したら、ターゲットからtest-atom情報を取得してそのメンバーシップtest-atom.cを削除し、新しいターゲットのメンバーとして追加する必要があります。ファイルのターゲット メンバーシップは、ターゲットのビルドがそのファイルをコンパイル/コピー/リンクしようとするかどうかを決定するものです。(ターゲットがファイルに対して行うことは、メンバーが作成されたときに追加されるビルド フェーズによって異なります。)libatom.dylibtest-atom

libatom.dylibまた、製品グループのエントリに関する情報を取得し、それもターゲットのメンバーにする必要があります。test-atomこれにより、test-atom実行可能ファイルが に対してリンクされlibatom.dylibます。

最後に、test-atom(製品ではなく) ターゲットの情報を取得し、[全般] タブでターゲットへの依存関係を追加しますlibatom.dylib。これにより、test-atomターゲットをビルドすると常に最初にターゲットがビルドされるようになりlibatom.dylibます。

于 2009-08-24T00:00:53.093 に答える
2

編集: Xcode 3 と Objective-C を使用した自動化された単体テストを参照してください(以下のコメントで指摘されているように、最初にリンクした記事の最新バージョン)。また、Objective-C コードを単体テストする最良の方法は何ですか?も参照してください。まだ Obj-C を使用していないことは明らかですが、新しいターゲットを設定する基本は C コードでも同じです。OCUnit 固有のものは、IDE での単体テストの仕組みをよく表しています。

于 2009-08-23T23:55:31.780 に答える