【機器人學】機器人開源專案KDL原始碼學習:(7)examples中的CMakeList.txt檔案解讀
阿新 • • 發佈:2018-11-25
通過學習KDL開源專案的程式碼可以學習CMake構建程式的知識,現簡單介紹一下orocos_kinematics_dynamics-master\orocos_kinematics_dynamics-master\orocos_kdl\examples\CMakeList.txt檔案的指令。
IF(ENABLE_EXAMPLES) INCLUDE_DIRECTORIES(${PROJ_SOURCE_DIR}/src ${PROJ_SOURCE_DIR}/models ${PROJ_BINARY_DIR}/src) add_executable(geometry geometry.cpp ) TARGET_LINK_LIBRARIES(geometry orocos-kdl) add_executable(trajectory_example trajectory_example.cpp ) TARGET_LINK_LIBRARIES(trajectory_example orocos-kdl) add_executable(chainiksolverpos_lma_demo chainiksolverpos_lma_demo.cpp ) TARGET_LINK_LIBRARIES(chainiksolverpos_lma_demo orocos-kdl orocos-kdl-models) ENDIF(ENABLE_EXAMPLES)
逐句解讀:
IF(ENABLE_EXAMPLES)
判斷是表示式ENABLE_EXAMPLES是否為ON,預設是OFF,要想該更改值需要在orocos_kdl/CMakeList.txt檔案中將OPTION(ENABLE_EXAMPLES OFF “Enablebuilding of examples”)行中的OFF改成ON。
INCLUDE_DIRECTORIES(${PROJ_SOURCE_DIR}/src${PROJ_SOURCE_DIR}/models ${PROJ_BINARY_DIR}/src)
為構建樹新增包含路徑,如果沒有這一句,那麼在make以後,會顯示chainiksolverpos_lma_demo.cpp中的第一句include “frame_io.hpp”編譯無法通過,因為沒有指定frame_io.hpp的路徑。
add_executable(geometrygeometry.cpp )
TARGET_LINK_LIBRARIES(geometryorocos-kdl)
將原始檔生成一個可執行檔案,將靜態連結庫orocos-kdl連線到目標geometry上,如果沒有target_link_libraries,那麼src中的原始檔的函式就不能被呼叫。
add_executable(trajectory_exampletrajectory_example.cpp )
TARGET_LINK_LIBRARIES(trajectory_exampleorocos-kdl)
add_executable(chainiksolverpos_lma_demochainiksolverpos_lma_demo.cpp )
TARGET_LINK_LIBRARIES(chainiksolverpos_lma_demoorocos-kdl orocos-kdl-models)
這四行同理。
ENDIF(ENABLE_EXAMPLES)
第一行IF的結束語句。