機能 #3082
完了CMake3.0.2でのワーニング対応
100%
説明
CMake3.0.2では新たにcmake-policiesが追加され、既存のコードではワーニングが出るようになった。
http://www.cmake.org/cmake/help/v3.0/manual/cmake-policies.7.html
Windowsで使用するCMake GUIでは、ワーニングは赤字で表示されるので、ワーニングがでないように対応する。
---- 背景
・OpenRTM-aist C++ 1.1.1版 リリースに合わせての対応
・CMake のサイトでは、ダウンロードのデフォルトのバージョンが3になっている(2014年10月時点でversion 3.0.2)
・OpenRTM-aist C++ 1.1.1 ダウンロードページでのWindows環境では、CMake3.0.2へリンクを貼り、このバージョンを利用してもらうようにするため
n.kawauchi さんが約10年前に更新
- 進捗率 を 0 から 100 に変更
- Policy CMP0046とCMP0048に対応した
- OpenCVコンポーネント群であるImageProcessingの全体ビルドでの確認で、CMP0046とCMP0048に対するワーニングが出たことによる
- Ubuntu14.04は、apt-getでcmakeをインストールすると、2.8.12.2のバージョンがインストールされるので、cmake_minimum_requiredはVERSION 2.8のままとした
CMP0046に対する修正詳細¶
参考:Added new policy CMP0046 which requires dependencies added by add_dependencies() to actually exist.
以下の形式でないとワーニングが出るようだ。add_custom_targetが無いと指摘されてワーニングになっている。
-----
cmake_policy(SET CMP0046 NEW)
add_custom_target(foo)
add_custom_target(bar)
add_dependencies(foo bar)
-----
src/CMakeLists.txtとidl/CMakeLists.txtに関係しているため、if文で判断させて多重宣言にならないようにした。
if(NOT TARGET ALL_IDL_TGT) add_custom_target(ALL_IDL_TGT) endif(NOT TARGET ALL_IDL_TGT)
CMP0048に対する修正詳細¶
ワーニング出力状況- Delete Cache 直後は出力されない
- CMake GUIで、Configureボタンを続けて押すと、3.0.2のバージョンは2回目以降からこのワーニングが出るが、
2.8.12.2のバージョンは同じ操作を繰り返しても問題ない - CMake3.0.2の環境でImageProcessingの一括ビルドをすると、一番初めのAffineコンポーネントでは出力されないが、続く
BackGroundSubtractionSimple ~ Translateのコンポーネントは全てこのCMP0048が出る
CMP0048ワーニングメッセージ
CMake Warning (dev) at components/BackGroundSubtractionSimple/CMakeLists.txt:4 (project): Policy CMP0048 is not set: project() command manages VERSION variables. Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy command to set the policy and suppress this warning.
project()コマンドの引数を変更すればよいのだが、2.8.12.2バージョンではエラーになるため、if文で判断させるようにした。
if(POLICY CMP0048) cmake_policy(SET CMP0048 OLD) endif()
r518とr519にて修正。