2012-04-12 7 views
13

私の既存のC++コードベースをXCode iOSプロジェクトに 'インポート'しようとしています。既存の(C++)コードベースをXCode 4.3(.1)に組み込み、コンパイルしてリンクするためにXCodeを取得する

問題は、xCodeは自分のコードをコンパイルしない(したがってリンクしない)ということです。 これは私がこれまで行ってきたことです:

  • ファイル> "プロジェクト"にファイルを追加してください。複数のプラットフォームで共有されているコードベースで、ソースコードの複数のコピーがオプションではないので、「ファイルをコピーする」にチェックマークを付けません。
  • "ヘッダー検索パス"プロジェクト設定に適切なパスを追加しました。ヘッダーファイルを含め、Objective-C++(.mm)ファイルから "stuff.h"を#includeできます。

しかし、実際に.cppファイルをコンパイルするようにXCodeに指示する方法はありません。

いくつかのポイント:私は事前にライブラリにコンパイルする方法を探して、その道

  • プロジェクトを結ぶないよ

    • は、標準のiOS Objective-Cのプロジェクトです。そこから呼び出されたC++コード(それは問題ではない)私は、ターゲットの「ソースをコンパイル」にコードベースディレクトリを追加しました

    を更新。私は実際に私のコードベースへのディレクトリ参照を選択することができないので、私は実際には、 "他の追加..."をクリックしてダイアログがポップアップする必要があります。

    私が追加すると、「外部ビルドシステムプロジェクトを作成する」かどうかをXCodeから聞いてきます。デフォルト値 "/ usr/bin/make"と "$(ACTION)"の2つのフィールドにチェックを入れておきます。しかし、私のコードベースはビルド中にコンパイルされません。自分のMakefileを書く必要がありますか?

    私は、ディレクトリの参照がターゲットの下に作成されますが、ビルド時にコンパイルされていないと警告が発せられるされ、その後、「外部のビルドシステムのプロジェクトを作成」を選択しない場合:

    warning: no rule to process file '$(PROJECT_DIR)/../codebase' 
    of type folder for architecture i386 
    
  • 答えて

    18

    も、あなたドン場合チェックするファイルをコピーするを追加する対象をファイルに追加するときにターゲットに追加します。

    enter image description here

    あなたがそれを行うのを忘れた場合、あなたは、ターゲットを選択ビルドフェーズタブに移動し、ソースをコンパイルにファイルを追加することができます。あなたがターゲットに行けば

    enter image description here

    +0

    [ターゲットに追加]の下にあるターゲット(1つだけ)がチェックされています。 – olafure

    +0

    あなたのcppファイルは、** Compile Sources **にリストされていますか?あなたがそれらを追加しようとしていない場合は? – sch

    +4

    私たちはそこに着いています:)単一の.cppファイルを追加すると、ビルドに含まれます!しかし、ディレクトリ全体を選択した場合(私の更新された質問を参照)、何も構築されません。私はむしろすべての私のgazillion .cppファイルを手動で選択しないでください(パスを間違っていると手動でファイルを追加/削除する必要が追加された地獄を含む) – olafure

    8

    - >フェーズをビルド - >ソースをコンパイル - > "+" - > "その他の追加" - >(外部ソースフォルダを選択) - >を選択:グループを作成するために追加されたフォルダ - >未チェック:アイテムを宛先にコピーします。

    あなたのフォルダは構造を模倣したXCodeになります。ソースファイルをXCodeのそのフォルダに追加すると、ソースファイルが外部ソースディレクトリに正しく追加されます。そのため、複数のIDEを使用したり、ソースリンケージを管理する必要がなくなります。

    キャッチ。 「ソースのコンパイル」領域に手動でファイルを追加する必要があります。これはむしろ単純です。単にソースファイルをクリックして、XCodeのグループディレクトリから[コンパイル元]ウィンドウにドラッグします。したがって、ソースファイルを今追加する際に余分なステップがあります。コンパイル元のウィンドウにそれらを追加するのを忘れると、未解決のシンボルがコンパイルエラーになります。

    +5

    iOS開発者がこれをどのように実行可能なオプションと見なすかは、私の心を吹き飛ばします。これは、あなたが数百のファイルを持っていてもうまくいけばうまくいきます。私はこの問題がXCode 8の時点で解決されていないとは信じられません。 – enl8enmentnow

    +0

    「ドラッグアンドドロップ」が私の心を吹き飛ばすのを見ているだけです。 この.pbxprojファイルは私の心を吹き飛ばし、そのフォーマットはとても馬鹿です。複数のターゲットで複数の開発者と作業することで、これらすべての参照でこのプロセス全体が壊れてしまいます。 たとえば、プルリクエストをマージする前にプロジェクトにターゲットを追加すると、新しいターゲットはマージする新しい「ソースファイル」に関連付けられません。 これまでの最悪のIDEで、私は多くのものを使用しました。 – koxon

    関連する問題