CMakeのprojectの第2引数についての調査¶
#4132 の対応をして頂いたが、Linux環境でのPython RTCは、OpenRTMConfig.cmakeを見つけることができずcmakeが通らないことの調査
- Windows環境ならば、C++, Python のどちらのRTCでも問題なくcmakeが通る
- Linux環境でもC++ならばcmakeは通る
RTCBuilderではPython言語が指定された場合には第2引数としてNONEを定義している。
- C++で「cxx_test」プロジェクトを生成した場合 : project(cxx_test)
- Pythonで「py_test」プロジェクトを生成した場合 : project(py_test NONE)
NONEの指定が入っていると、OpenRTMConfig.cmakeを見つけることができない。
簡単なCMakeLists.txtを用意して動作確認した結果を下記に示す。
cxx_test/ CMakeLists.txt build py_test/ CMakeLists.txt build
- cxx_test/CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2) project(cxx_test) ←★NONEなし find_package(OpenRTM) set(RTM_VER ${OPENRTM_VERSION}) set(RTM_SHORT_VER ${OPENRTM_VERSION_MAJOR}${OPENRTM_VERSION_MINOR}${OPENRTM_VERSION_PATCH})
- py_test/CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2) project(py_test NONE) ←★NONEあり find_package(OpenRTM) set(RTM_VER ${OPENRTM_VERSION}) set(RTM_SHORT_VER ${OPENRTM_VERSION_MAJOR}${OPENRTM_VERSION_MINOR}${OPENRTM_VERSION_PATCH})
cmakeに「-DCMAKE_FIND_DEBUG_MODE=1」オプションを付けて実行すると分かる。
- cxx_test・・・OK!
$ cmake .. -DCMAKE_FIND_DEBUG_MODE=1 Checking prefix [/usr/local/] Checking file [/usr/local/OpenRTMConfig.cmake] Checking file [/usr/local/openrtm-config.cmake] Checking prefix [/usr/] Checking file [/usr/OpenRTMConfig.cmake] Checking file [/usr/openrtm-config.cmake] Checking file [/usr/lib/x86_64-linux-gnu/openrtm-1.2/OpenRTMConfig.cmake] Checking file [/usr/lib/x86_64-linux-gnu/openrtm-1.2/openrtm-config.cmake] Checking file [/usr/share/openrtm-1.2/OpenRTMConfig.cmake] Checking file [/usr/share/openrtm-1.2/openrtm-config.cmake] Checking file [/usr/lib/x86_64-linux-gnu/openrtm-1.2/cmake/OpenRTMConfig.cmake] -- OpenRTMConfig.cmake found. -- Configrued by configuration mode. -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") -- Checking for module 'omniORB4' -- Found omniORB4, version 4.1.6 -- OpenRTM-aist configuration done -- Configuring done -- Generating done
- py_test・・・NG! OpenRTMConfig.cmakeを見つけることができない。
$ cmake .. -DCMAKE_FIND_DEBUG_MODE=1 Checking prefix [/usr/local/] Checking file [/usr/local/OpenRTMConfig.cmake] Checking file [/usr/local/openrtm-config.cmake] Checking prefix [/usr/] Checking file [/usr/OpenRTMConfig.cmake] Checking file [/usr/openrtm-config.cmake] Checking file [/usr/share/openrtm-1.2/OpenRTMConfig.cmake] Checking file [/usr/share/openrtm-1.2/openrtm-config.cmake] Checking prefix [/] Checking file [/OpenRTMConfig.cmake] Checking file [/openrtm-config.cmake] Checking prefix [/usr/games/] Checking file [/usr/games/OpenRTMConfig.cmake] Checking file [/usr/games/openrtm-config.cmake] Checking prefix [/usr/local/games/] Checking file [/usr/local/games/OpenRTMConfig.cmake] Checking file [/usr/local/games/openrtm-config.cmake] Checking prefix [/snap/] Checking file [/snap/OpenRTMConfig.cmake] Checking file [/snap/openrtm-config.cmake] CMake Warning at CMakeLists.txt:12 (find_package): By not providing "FindOpenRTM.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenRTM", but CMake did not find one. Could not find a package configuration file provided by "OpenRTM" with any of the following names: OpenRTMConfig.cmake openrtm-config.cmake Add the installation prefix of "OpenRTM" to CMAKE_PREFIX_PATH or set "OpenRTM_DIR" to a directory containing one of the above files. If "OpenRTM" provides a separate development package or SDK, be sure it has been installed. -- Configuring done -- Generating done