ROS

ROS_Study: CMakeLists.txt(1)

우기빌리 2023. 9. 11. 10:27

CMakeLIst.txt

모든 CMake-compliant package는 최소한 1개의 CMakeLists.txt 파일을 보유하고, 해당 txt파일은 code를 어떻게 빌드 할 것인지, 어디에 설치 할 것인지 등을 묘사한다.

 

CMakeLists.txt의 전체 구성

1. Required CMake Version(cmake_minimum_required)
2. Package Name(project())
3. Find other CMake/Catkin packages needed for build(find_package())
4. Enable Python module support
5. Message/Service/Action Generators (add_message_files(), add_service_files(), add_action_files())
6. Invoke message/service/action generation (generate_messages())
7. Specify package build info export (catkin_package())
8. Libraries/Executables to build (add_library()/add_executable()/target_link_libraries())
9. Tests to build (catkin_add_gtest())
10. Install rules (install())

 

find_package(Finding Dependent CMake Packages)

우리가 프로젝트를 빌드할 때, 어떤 다른 CMake pkgs가 필요한지 find_packages에 작성해 줘야 된다.

 

ex)

>> find_package(catkin REQUIRED)

 

만약 CMake의 find_package로 기타 pkg를 발견할 경우, 발견된 pkg의 정보를 줄 수 있는 CMake environment variables를 만든다.

 

Catkin packages들은 catkin의 요소들이 아니다. 하지만 만약 다음과 같이 catkin의 구성요소로서 해당 pkgs를 find_package를 한다면

>> find_package(catkin REQUIRED COMPONENTS nodelet)

 

nodelet으로부터 추출된 paths, libraries, etc 등이 catkin_variables에 포함된다.

 

*

우리는 다음과 같은 방식으로도 find_package nodelet을 할 수 있다.

>> find_package(nodelet)

 

이는 nodelet paths, libraries 등등이 catkin_variables에 포함되지 않는다는 얘기

example of find_package