0

ソースを Objective-C++ としてコンパイルするための構成を xcode で使用していますが、ライブラリを追加し、それを Objective-C としてコンパイルしたいのですが、それを行う方法はありますか?

私の設定:

//:configuration = Debug
CLANG_CXX_LIBRARY = libstdc++

//:configuration = Release
CLANG_CXX_LIBRARY = libstdc++

//:completeSettings = some
GCC_C_LANGUAGE_STANDARD
CLANG_CXX_LIBRARY
GCC_CW_ASM_SYNTAX

//:configuration = Debug
CLANG_CXX_LIBRARY = libstdc++
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp

//:configuration = Release
CLANG_CXX_LIBRARY = libstdc++
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp

//:completeSettings = some
GCC_C_LANGUAGE_STANDARD
CLANG_CXX_LIBRARY
GCC_CW_ASM_SYNTAX
GCC_INPUT_FILETYPE
4

1 に答える 1

2

ここで行ったことはお勧めしません。グローバル デフォルトを変更するよりも、ファイルに正しい名前を付ける方がはるかに優れています ( .mObjC および.mmObjC++ の場合は、C++ の場合は「.cpp」)。何らかの理由でこれが不可能な場合は、個々のファイルを選択してオーバーライドできます。ファイル リストでそれらを選択し、インスペクタを開き、[ID とタイプ] フィールドで、それぞれに必要なファイル タイプを選択します。この方法で個々のファイルをリセットして ObjC に戻すことは可能ですが、デフォルトはそのままにして、どうしても必要な場合はオーバーライドすることをお勧めします。

ほとんどのコードを ObjC++ としてコンパイルすることはお勧めできません。十分にサポートされている言語ではありません。ObjC と純粋な C++ の間の接着剤として意図されています。ObjC++ には多くのオーバーヘッドがあり、コンパイル時と実行時にパフォーマンスが低下します (また、実行時に ObjC や C++ よりも多くのメモリを使用します)。これは、デバッガーやその他のツールで最もサポートされていません。もちろん、それをデフォルト言語にするべきではありません。詳細については、 C++ Final Editionのラッピングを参照してください。

于 2013-02-23T01:27:38.493 に答える