ROS_Study: CMakeLists.txt(1)
모든 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에 포함되지 않는다는 얘기