2012-02-27 9 views
2

私は経験豊富なMac/iOS開発者ですが、当初はC++でプログラミングを始めました。私は何年もC++に触れていませんでしたが、私が作成しようとしている新しい種類のファイルタイプをマルチプラットフォームでサポートしたいので、そうしましょう。OS X Lion C++ 11、Boostその他の質問

C++は、第三者図書館の非常に膨大な混乱と、言語の進化を制御するC++標準委員会の努力によって、長年にわたって進化してきました。したがって、私の質問。

できるだけ多くの高度なツールを自由に使いたいと同時に、可能な限り標準に準拠したいと思っています。私の主な開発プラットフォームはOS X Lionで、私はfedora 16のインストールにアクセスできます。私はLion以上、Windows XP以上、最新のLinuxカーネルを対象にしたいので、下位互換性は問題ではありません。

私のマシンにBoostライブラリをインストールすることをお勧めしますが、私はずっと前に経験したことがありますが、コンパイル時のエラーやOS Xの処理が必要な非常に辛いプロセスです。私は今それを試してみると、その経験が同じになるかどうかわからない。もう一つの選択肢は、ライオンが現在提供しているTR1に固執することです。しかし、TR1は私が理解しているように標準ではありません。これは、C++ 11で行われる予定の事実の事実上の普及した実装です。そうすれば、Boostが提供する多くの高度な機能を失うことになります。

これらの2つのオプションを手に入れて、高度なC++機能を自由に使い、できるだけ標準に準拠させるための推奨方法は何ですか?それがBoostなら、Boostをエンドユーザのマシンにインストールするのを避けるために、Boostを静的ライブラリとしてコンパイルすることをお勧めしますか?

Xcode 4.3 for C++ 11の現在のサポートは何ですか?

私は、上記の質問とその問題に関する他の考えに対するコメントを感謝します。私は現在のバージョンとC++の機能を同期させようとしていますが、これは私が最初に思ったほど簡単ではないかもしれないことに気付き始めます。

ありがとうございました。

答えて

1

まず、ブースト中に2つの非常に異なる部分がありますちょうど、間違いなくはるかに簡単です。 Asioのようなライブラリの中には、2つのコンパイルモード(ヘッダのみとライブラリ)があることに注意してください。しかし、有用なライブラリの多くは、boost::regexのように、コンパイルされたライブラリが必要です。

第2に、C++ 11のサポートが急速に進んでいます。 GCC 4.7と今後登場するClang 3.1は、アトミック(ただし、ディスカッションはまだ最善のインプリメンテーション戦略で進行中です)を除き、スタンダードのすべての主要機能をサポートしています。Visual Studioは遅れており、マイクロソフトは速く動くことに本当に関心がありません。したがって、Windowsのサポートは最小限です(サポートされている機能は、旧バージョンのStandardに基づいており、前バージョンと100%互換ではありません)。 Windows用にコンパイルできないというわけではなく、Mingwまたは同等のものを使用して既存のWindows DLLとのやりとりを行わなければならないということだけではありません。

これら2つの観察に基づいて、私が推薦する:

  • は、そうでない場合、私は(Xcodeでの統合のための)クランをお勧めします、あなたがWindowsのDLLと対話したい場合は今のC++ 11を避けるようにしてください
  • あなたはライブラリをしたい場合は、あなたがいる限り、あなたが配布してDLLを使用することができますブーストにライブラリを回避しようとヘッダのみの部品(あまり良さがまだある)
  • にこだわりますそれらは実行可能ファイルの横にあるか、パッケージシステムなどを使用しますが、静的なリンクだけでなくインストール(インストール)に大きな困難を伴います。
+0

非常に有益です。私はWindowsのC++サポートが難しいと想像しました。ウィンドウが途切れると(私はC#でこのライブラリを書くことができると思います)、Boostをライブラリの形で使用したいと思っていました.Boostを静的ライブラリとしてコンパイルし、ライブラリとリンクさせてトリックを行います静的ライブラリの場合は、配布可能なアーカイブの中にコードが埋め込まれているため、外部リソースは必要ありません)。 – csotiriou

+0

@ChristosSotiriou:もしあなたがboostを静的にコンパイルするなら、それはちょうど*うまくいくはずです。さらに、C++ 11の機能を離れたり、Windowsライブラリを使わなくても、Windows用にも同じC++コードを使用できます。 –

+0

@MatthieuM:C++ 11に対するVC2010のサポートはそれほど悪くはありません。必要なのは、自分が行っていることを知っていることだけです。移動コンストラクタを自分で記述する限り、r値参照を使用することはできます。もう少し限られた形のラムダだけでなく、いくつかの他のものを使うことができます。 Regexからshared_ptrからunique_ptrまでの、標準ライブラリの新機能の多くをサポートしています。 –

1

ノート私はMacの開発者ではありませんが、私はBoostを好むでしょう。多くのC++ 11標準が採用されており、より多くのBoost機能がC++標準に移植される予定です。

そしてQt愛好家として:QtCoreを見てください。それは非常に強力でクロスプラットフォームです。

  • ヘッダーのみの
  • あなたは、ヘッダーに固執する場合はコンパイルされたライブラリ

を必要とするものであるものは: