質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

824閲覧

Objectiv-C++で書かれた.cppと.hファイルがC++ファイルと認識されてしまいビルドできない

yupshion

総合スコア7

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/02/26 12:59

編集2018/02/26 15:24

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でのビルドや設定に詳しい方がおられましたら助言くださると幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ソースを見ただけなのでうまくいくかどうか不明ですが

TwPrecomp.h

#elif defined(_MACOSX) # define ANT_OSX # include <unistd.h> # if defined(__OBJC__) // これ追加 # include <Foundation/Foundation.h> # include <AppKit/NSImage.h> # include <AppKit/NSCursor.h> # endif // __OBJC__ // これ追加 # undef _WIN32 # undef WIN32 # undef _WIN64 # undef WIN64 # undef _WINDOWS # undef ANT_WINDOWS # undef ANT_UNIX

である程度は通りそうですね。

投稿2018/02/27 00:07

MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yupshion

2018/03/12 16:15

回答ありがとうございます! こちらの方法でビルドしたところ、この部分でのエラーは現れなくなりました! 新たに別の箇所でエラーが出てしまい実行には至れていないのですが、 本件に関しては解決したのでベストアンサーにさせていただきます。ありがとうございました!
guest

0

Objective-C++は拡張子 .mm では。

投稿2018/02/26 15:05

yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yupshion

2018/02/26 15:22

コメントありがとうございます。 Objective-C++の拡張子は.mmかと思うんですが、 macOS SDKの中のFoundation/NSObjCRuntime.hを始めとするファイルの中に、@class等のコンパイル指示子をはじめとしたObj-C系の記述がありました。 「.h」の拡張子のままでもObjective-C++として読み込む方法はないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問