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 |
댓글 없음:
댓글 쓰기