質問: Cmakeで作成したXcodeのプロジェクトファイルのビルドが上手く行きません。 https://github.com/InteractiveComputerGraphics/PositionBasedDynamics 上記のプロジェクトをcloneしてXcodeを用いてビルドし、サンプルをXcode上でビルドしようとしたのですが、 本プロジェクト内でSDKのファイルを参照した際に、元々の形式のObjective-C++ではなくC++と判別されてしまい、 Foundation/NSArray.h等のファイル内にある 「@class」「@interface」といったObj-Cの形式の記述で、 > > clang: warning: argument unused during compilation: '-ObjC++' [-Wunused-command-line-argument] > > In file included from /Users/uco/Programs/Github/PositionBasedDynamics/extern/AntTweakBar/src/LoadOGL.cpp:11: > > In file included from /Users/uco/Programs/Github/PositionBasedDynamics/extern/AntTweakBar/src/TwPrecomp.h:65: > > In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:8: > > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:503:1: error: expected unqualified-id > > @class NSString, Protocol; > > ...以下同様のエラー > > > のようなエラーが出てビルドすることができません。 プロジェクト内のファイルであれば、Utilityタブの「Identity and Type」を変更することで対応できるのですが、 SDK内のコードに関しては「Not Applicable」と表示されてしまい変更できません。 また、ファイル名の拡張子を「.mm」に変更することで認識されるといった対処法を見かけたのですが、 エラーの対象のファイル数が多すぎて現実的でなく、他の解決法がないか調べています。 使用しているPC:MacBook Pro macOS 10.13 Cmakeのバージョン:3.11.0-rc1 Xcodeのバージョン:Version 9.1 (9B55) SDKのバージョン:Mac OS 10.12, 10.13 です。 解決にあたって不足する情報があれば追記させていただきます。 Xcodeでのビルドや設定に詳しい方がおられましたら助言くださると幸いです。 よろしくお願いします。
回答: ソースを見ただけなのでうまくいくかどうか不明ですが TwPrecomp.h ``` #elif defined(_MACOSX) # define ANT_OSX # include # if defined(__OBJC__) // これ追加 # include # include # include # endif // __OBJC__ // これ追加 # undef _WIN32 # undef WIN32 # undef _WIN64 # undef WIN64 # undef _WINDOWS # undef ANT_WINDOWS # undef ANT_UNIX ``` である程度は通りそうですね。