「cmake_minimum_required」機能を使用して、CMakeの最小バージョンを定義したい。一部のプロジェクトは最小バージョン2.8を設定し、他のプロジェクトは3.0または3.2を設定しているのを見てきました。このトピックについてのあなたの意見やベストプラクティスを学びたいと思います。
cmake_minimum_required()
関数は、現在のホストにインストールされているものよりも新しいバージョンのCMakeを想定している_CMakeLists.txt
_による不可解なエラーメッセージを回避するために使用されます。
例として、早期に失敗し、明確なメッセージが表示されます...
_CMake 3.2 or higher is required. You are running version 2.8.12.2
_
...後で(はるかに)より不可解なものよりも優先されます...
_In file included from /home/foouser/src/testprj/string.cpp:1:0:
/home/foouser/src/testprj/string.hpp:94:29: error: ‘std::is_same’ has not been declared
_
...この例では、古いバージョンのCMakeがset( CMAKE_CXX_STANDARD 11 )
をサポートしていないからです。きっと同意することでしょう。
理想的な設定は次のとおりです。
古いバージョンを実行しているユーザーやスクリプトとの最大の互換性。ただし、どのバージョンを正確にテストする必要があります最初に構成をサポートしたのはこのためです。したがって、通常は次のようになります。
ほとんどのプロジェクトではおそらくそれで十分です。そして、あなたがプロジェクトで実際に作業しているのがあなただけで、CMakeの互換性のテストがreally少ない場合、おそらく次のようになります。
この後者のアプローチには、他の誰かがプロジェクトをコンパイルしようとすると、深刻な欠点があります。かなりの数の人々がすべての最新バージョンを使用していない。特にLinuxでは、デフォルトではパッケージマネージャーから提供されたものを使用します。たとえば、Ubuntu wilyは現在バージョン3.2.2です-youより新しいバージョンがある可能性がありますが、need後のバージョン、あなたはそれをrequireすべきではありません(それは人々ができないことを意味するので)最初に新しいバージョンのCMakeを手動でインストールせずにプロジェクトをビルドします)。
あなたがすべきことないしていることは...
理由は明白であるはずです-物事がうまくいかなかった理由についてのヒントをユーザーが得ることなく、ビルドが失敗する可能性があります。