1. 程式人生 > >【機器人學】機器人開源專案KDL原始碼學習:(7)examples中的CMakeList.txt檔案解讀

【機器人學】機器人開源專案KDL原始碼學習:(7)examples中的CMakeList.txt檔案解讀

通過學習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的結束語句。