- 締切済み
windowsでのコンパイラの指定
macにて下記の指定でコンパイル可能なのですが、 windowsにてコンパイルできず困っています。 -std=c++11 -stdlib=libc++ 環境はwindows8でwindows SDK 7.1をいれています。 windowsでの開発環境がよくわかっていないのですが、 上記の指定はwindowsではどうなるのでしょうか? よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
申し訳ありませんVisualC++2010、C++11に一部対応してるといえばしてますね。 ただ正確にいえばC++11策定段階のC++0xに一部対応ですけど(C++11は2011年策定なのでVisualC++2010出荷時にはまだない)。
Visual Stdio 2010でも一部機能はサポートされているようですね。 "C++11 の機能 (Modern C++) のサポート" http://msdn.microsoft.com/ja-jp/library/hh567368.aspx ただ、上記の質問が出るという事は、本当に C++11 の機能が必要かどうか? また、mac独自の機能を使っていないか、どうか? Visual Stdioだと、パスが通っていれば、 > cl /? で、Helpが表示されるので、参考にしましょう。 また、"C/C++ プログラムのコンパイル" http://msdn.microsoft.com/ja-jp/library/wk21sfcf.aspx にも説明がありますね。 (Visual Stdio 2013ですが) gccについては、詳しくないですが、確か、Firefoxが gccだったか? (以前、Buildした時は) Cygwin環境が、ちょっとクセがあって、?でした。 今、検索すると、 MinGWなんてのもあるようです。
- wormhole
- ベストアンサー率28% (1626/5665)
>はい。c++11とかlibc++がないのでエラーがでていると思っています。 「思っています」とかではなく -std=c++11 -stdlib=libc++ が、どういう意味かを調べて考えましょうよ。 macは所持していませんがC++コンパイラはllvmだったかと思います。 私が使用しているFreeBSDもコンパイラはllvmになってますのでman ccから抜粋しておきます。 > -std=language > Specify the language standard to compile for. > > -stdlib=library > Specify the C++ standard library to use; supported options are > libstdc++ and libc++. -std=languageは言語規格指定です。 -std=c++11はコンパイラにC++11(ISO/IEC 14882:2011)の仕様でコンパイラが動作するようにする指定ですがVisualC++2010はC++11には対応してませんので該当するオプションが存在しません(C++11対応はVisualC++2012から一部対応)。 -stdlib=libraryはC++の標準C++ライブラリとしてlibc++,libstdc++のどちらを使うかの指定です。 なので-stdlib=libstdc++はlibstdc++を標準C++ライブラリとして使用する指定なわけですがVisualC++系はlibstdc++というライブラリはありませんから指定のしようがありません。 Macの開発環境ならおわかりになるようなので例えで書きますが「MacのC++で、MSVCP110.DLLをリンクするにはどうすればいいですか」という質問された場合、どう答えますか?(MSVCP110.DLLはVisualC++2010の標準C++ライブラリです) >そもそも指定し直すことができないということでしょうか? そういう事です。 ですので対応方法としては -std=c++11 ソースのC++11規格で書かれている所をVisualC++2010でコンパイルでいるように書き直す。 -stdlib=libstdc++ そもそもどういった理由でlibstdc++を使用するのかをまずは調べる。 理由によって、ソースを書き直したりlibstdc++をVisualC++2010向けに移植したり色々。
MAC上ではGCCを使用して開発されているものと推察 します。Windows SDK 7.1 には GCC の開発環境は 入っていませんので、これではコンパイルできません。 別途 Windows 版の GCC 開発環境をインストールして 試してみてはいかがでしょうか。(そもそも存在するのか どうかは私は寡聞にして知りませんが…)
- wormhole
- ベストアンサー率28% (1626/5665)
windows SDK 7.1ということはVisual C++ 2010なんだと思いますが -std=c++11 対応するオプションはありません。 -stdlib=libc++ libc++ という名前のライブラリはVisualC++にはありません。
お礼
ありがとうございます。 はい。c++11とかlibc++がないのでエラーがでていると思っています。 これをVisual C++ 2010で使用しているコンパイラに指定しなおせばよいと思っているのですが、 そもそも指定し直すことができないということでしょうか?