// it's for Latex

pages

[ VINS-mono code review ] #03. feature_tracking (CMakeLists.txt)

1. CMakeLists.txt


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
cmake_minimum_required(VERSION 2.8.3)
project(feature_tracker)
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    sensor_msgs
    cv_bridge
    camera_model
    )
find_package(OpenCV REQUIRED)
catkin_package()
include_directories(
    ${catkin_INCLUDE_DIRS}
    )
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(Eigen3)
include_directories(
  ${catkin_INCLUDE_DIRS}
  ${EIGEN3_INCLUDE_DIR}
)
add_executable(feature_tracker
    src/feature_tracker_node.cpp
    src/parameters.cpp
    src/feature_tracker.cpp
    )
target_link_libraries(feature_tracker ${catkin_LIBRARIES} ${OpenCV_LIBS})
cs

Line 4 to 6

CMAKE 빌드에 대한 설정이다.



Line 8 to 14

find_package 항목은 catkin build를 할 때 요구되는 구성 요소 패키지이다. 여기에 입역된 패키지가 없다면 catkin build를 할 때, 사용자에게 에러가 표시된다. 즉 사용자가 만든 패키지가 의존하는 다른 패키지를 먼저 설치하게 만드는 옵션이다.



Line 16

다음은 ROS 이외의 패키지를 사용할 때 사용되는 방법이다. 예를 들어 OpenCV를 사용할 때 어떠한 패키지가 설치되어야 하는지를 언급할 수 있다. 기능은 앞에서 설명한 의존하는 패키지를 먼저 설치하게 만드는 옵션이다.



Line 18

catkin build 옵션이다.



Line 20 to 22

Include_directories는 인클루드 폴더를 지정할 수 있는 옵션이다. 현재 ${catkin_INCLUDE_DIRS}라고 설정되어 있는데 이는 각 패키지 안의 include 폴더를 의미하고 이 안의 헤더 파일을 이용하겠다는 설정이다. 사용자가 추가로 인클루드 폴더를 지정할 때는 ${catkin_INCLUDE_DIRS} 아랫줄에 기재하면 된다.



Line 24

설정 변수를 정의하는 명령.
SET(<변수명> <값>) 과 같이 구성된다.
즉, CMAKE_MODULE_PATH는 ${PROJECT_SOURCE_DIR}/cmake가 되는 것이다.
참고로 해당 경로 안에는 Eigen 패키지를 찾기 위한 cmake 파일이 있기 때문이다.



Line 25

Eigen3 패키지를 찾는다.



Line 26 to 29 

include 디렉토리를 설정하는 내용이고,
${catkin_INCLUDE_DIRS}는 각 패키지의 include 폴더이고,
${EIGEN3_INCLUDE_DIR}는 Eigen 패키지의 Include 폴더를 포함하는 것 같다.(추정)



Line 31 to 35

feature tracker란 패키지가 실행될 때 3개의 cpp 파일을 실행시키게 된다.
해당 파일들을 하나하나 살펴볼 필요가 있겠다.



Line 37

target_link_libraries는 지정 실행 파일을 생성하기에 앞서 링크해야 하는 라이브러리와 실행 파일을 링크해주는 옵션이다. catkin과 opencv의 libraries를 링크해준다고 생각하면 된다.



2. CMakeLists.tst 만들기

먼저 원래 feature_tracker 폴더안에 있는 cmake 폴더와 CMakeLists.txt 파일을 복사해서 feature_tracker_custom 폴더 안에 넣고, CMakeLists.txt의 내용을 다음과 같이 수정해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
cmake_minimum_required(VERSION 2.8.3)
project(feature_tracker_custom)
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    sensor_msgs
    cv_bridge
    camera_model
    )
find_package(OpenCV REQUIRED)
catkin_package()
include_directories(
    ${catkin_INCLUDE_DIRS}
    )
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(Eigen3)
include_directories(
  ${catkin_INCLUDE_DIRS}
  ${EIGEN3_INCLUDE_DIR}
)
add_executable(feature_tracker_custom
    src/feature_tracker_node.cpp
    src/parameters.cpp
    src/feature_tracker.cpp
    )
target_link_libraries(feature_tracker_custom ${catkin_LIBRARIES} ${OpenCV_LIBS})
cs



이제 아래 명령어를 통해 빌드를 한다.

1
2
$ catkin build feature_tracker_custom
$ source ~/catkin_ws/devel/setup.bash
cs

댓글 없음:

댓글 쓰기