現在のプロジェクトを C++11 に移行したいと考えています。コードはすべて、clang++ -std=c++0x を使用してコンパイルされます。それは簡単な部分です:-)。難しいのは、外部ライブラリを扱うことです。自分の C++11 オブジェクトを、c++11 でコンパイルされていない外部ライブラリとリンクすることに依存することはできません ( http://gcc.gnu.org/wiki/Cxx11AbiCompatibilityを参照)。たとえば、Boost は確かに再構築が必要です (この boost::program_options の例にリンクして、c++0x モードで libc++ を使用してclangできないのはなぜですか? )。私が使用するすべての外部ライブラリのソースがあるので、理論的には C++11 でこれらのライブラリを再構築できます (多少の苦痛は伴います)。ただし、それでもいくつかの問題が残ります。
C++03/C++11 が混在する環境での開発: C++03 を使用する古いプロジェクトがいくつかあり、定期的なメンテナンスが必要です。もちろん、これらを既存のバージョンの外部ライブラリとリンクさせたいと思います。しかし、現在の (および新しい) プロジェクトでは、再構築した C++11 バージョンのライブラリとリンクしたいと考えています。これに対処するには、開発環境 (現在は Ubuntu 12.04 および Mac OS X 10.7) をどのように編成すればよいですか?
この問題は多くの開発者が直面すると思います。なくなるわけではありませんが、推奨され、一般的に承認されている解決策は見つかりませんでした。
展開:現在、クラウド内の Ubuntu 12.04 LTS サーバーに展開しています。経験から、Linux ディストリビューションで利用可能な標準パッケージ (libboost など) に (可能な限り) 依存するようになります。現在のプロジェクトを c++11 に移行する場合、使用する外部ライブラリの独自のバージョンを構築する必要があることを理解しています。私の推測では、ある時点でこれが変更され、C++11 と互換性のあるライブラリ パッケージの「標準」バージョンになると思います。いつそれが起こると予想されるか、誰にも分かりますか? そしておそらく、これには、上記の問題に対する標準的な解決策も必要になるでしょう。つまり、同じプラットフォーム上に C++03 ライブラリと C++11 ライブラリが同時に存在することです。
これらの認識された問題が適切な情報の一吹きで消えるように、基本的なことを見逃していることを願っています! C++11 への移行が早すぎますか?
更新 (2013-09-11): macports に関する関連ディスカッション: https://lists.macosforge.org/pipermail/macports-users/2013-September/033383.html