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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

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

Q&A

解決済

2回答

2049閲覧

C++におけるMacOS&Windowsアプリのビルドについて

gochuumonha

総合スコア74

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

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

0グッド

0クリップ

投稿2017/05/30 14:02

C++でクロスプラットフォームなアプリケーションを作成しようと考えています。(MacOSとWindows向け)

コーディング自体はWindowsのVisual Studio Community 2015を使って進めているのですが、MacOSの使用経験が少なく、Xcodeの使用経験はないため、Visual Studioで作成したコードをXcodeに移して、きちんとビルドできてアプリケーションにできるのかわからず不安に思っています。(もちろんwin32apiなどOS固有のものは使わないように気を付けています。)

Visual StudioとXcodeではコンパイラも違うでしょうし、何か気を付けることはあるでしょうか?それともIDE自体を変更すべきでしょうか?
MacOS向けアプリ開発の情報はほとんどなく、なおさらC++での情報は少なくて苦戦してます。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは。

Appleはllvmを採用しているようです。
そして、Windowsにもllvmはあります。
ですので単純に考えるとllvmで開発すると楽な気がします。

私自身はllvmをコンパイラとしては使ったことがない(AST解析ツールとして使用)のでllvmとVisual C++との差は把握していません。
しかし、標準規格に対して厳密な実装をしているものはllvm≒gcc>Visual C++と聞きます。

私はVisual C++とgccでマルチプラットフォーム開発していますが、Visaul C++は確かに規格に対して緩いです。Visual C++で通ってもgccでは通らないことはかなりよく有ります。
また、エラーメッセージはVisaul C++の方がgccより全体的に不親切な場合が多いです。そして、llvmはgccよりエラー・メッセージが丁寧と聞きます。

以上より、可能であればllvmを使うのが好ましいように感じます。
なお、AppleのllvmはApple-branchらしく本流とは何か違っているそうです。
しかし、Visual C++とllvm程の差はないことは期待していいと思います。

投稿2017/05/30 14:20

Chironian

総合スコア23272

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

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

退会済みユーザー

退会済みユーザー

2017/05/30 15:09

VC++にもコンパイラにClang(LLVM)を使用するオプションのコンポーネントがあったと思います。
Chironian

2017/05/30 16:42

lunateaさん。 思い出しました。フロントエンドにclang、バックエンドにVisual C++を使うコンポーネントありますね。(llvmはバックエンドなので使ってないようです。) 試験的導入ということなので実用に使うのはちょっと怖いかも。
gochuumonha

2017/05/30 17:08 編集

回答ありがとうございいます。 上記のようにVisualStudio+clangでやってみようと思います。それかeclipse等、他のIDEを考えます。。。 少し疑問に思ったのですが、MacではWindowsにおける.exeに該当するものってありますか? Linuxでgccすると.aが生成され、WindowsでMinGWのgccすると.exeが生成されますので.exe=Linuxにおける.aということなのでしょうか?(なんとなく違う気もしてますが) Macの.appが実行ファイルではなくて実行ファイルや設定ファイルが内包された特殊な圧縮ファイルのようなものだということは最近知りました。
Chironian

2017/05/31 02:55

私はMacもやらないといけないと思いつつ、手が回って無くてよく知らないです。 軽く調べる限り、.appがwindowsの.exeにあたると書いている複数のサイトを見かけました。 http://tokyo.secret.jp/macs/kakuchou_shi.html http://lee-ways.com/macdmg/ .exeもリソース等くっついてますので.appも同様な構造だったとしても可笑しくはないと思います。 linuxの .a はWindowsの .exe に当たるものではないです。.aは.oを纏めたアーカイブ・ファイルです。 静的リンクライブラリとして使われています。
gochuumonha

2017/06/01 17:54

プラットフォームやコンパイラについてはあまり勉強する機会がなかったので、非常に勉強になりました。 ありがとうございました。
guest

0

win32APIは使用しないんですよね?
(これはwindowsだけですからね)

なんのライブラリを使うのかはわからないのですが・・・
例えば、Qt/C++とかなら、xcodeで作成したことはあります。
ちゃんと動作しますよ。
Visual stuioでもQtはできるようです。

なんのライブラリを使用するかで変わるのではないでしょうか・・・

[追記]
あ、GUIのみの作成の場合の話ですね。
win32 APIと聞くとなんかGUIを即イメージしてしまうんですよね~

投稿2017/05/30 14:23

編集2017/05/30 14:25
strike1217

総合スコア651

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

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

strike1217

2017/05/30 14:38

visual studioのコードをmacのxcodeで開くと日本語のコメントが文字化けするんですよね・・・ 直し方は・・・知りません。すいません。
退会済みユーザー

退会済みユーザー

2017/05/30 14:53

Visual Studioでソースファイルを「名前を付けてファイルを保存」する時に、保存ボタンの横にある▼をクリックすると、「エンコード付きで保存」が出てくるので、エンコードをUnicode (UTF-8)で保存すればたぶん文字化けしないと思いますよ(Visual Studioのデフォルトはシフト JIS)。 ついでに改行もCRLFからLFに変更できます。 シグネチャ(BOM)の有無でまた問題は出るかもしれませんが。
strike1217

2017/05/30 14:55

visual studioの保存の時に注意するんですね!! ずっとxcodeの設定の方ばかりいじくっていました><
gochuumonha

2017/05/30 16:48

回答ありがとうございます。 XcodeではUTF-8のBOM無しに対応していたと思います。(BOM有りでは多分ダメ) Visual Studioでは長らくこのUTF-8のBOM無しに対応してなかったようですが、Visual Studio 2015 Update 2にて対応したようです。 言葉の定義が複雑というか、もう初心者いじめなのですが、 「UTF-8 BOM」なし=「UTF-8」=「UTF-8 シグネチャなし」 「UTF-8 BOM付き」=「UTF-8N」=「UTF-8 シグネチャ付き」 と表記が異なることがあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問