CMakeLists.txt简介

cmake是常用的跨平台编译工具。作为一个"git clone + cmake "工程师,我的工作大概是这么一个流程:

git clone xxx.git
cd xxx
mkdir build && cd build
cmake ..
make -j8
sudo make install

cmake的作用主要是将CMakeLists.txt转化为makefile,然后通过make指令编译,这里我们只需要编写CMakeLists.txt而不用管编译、链接的复杂过程。
下面简单介绍一下CMakeLists.txt的组成:

cmake_minimum_required(VERSION 3.0)
  • cmake的最小版本要求
project(orbvocabulary)
  • 项目工程名,在ROS中为package名
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 -O3")
  • 设置编译参数,添加c++11支持,release优化等级设为最高
include_directories("include/")
  • 添加头文件路径
# OpenCV
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
  • 查找依赖包
  • REQUIRED 其含义是表示如果包没有找到的话,cmake的过程会终止
# Set header files 
set(
	HEADER_FILES
	include/file_io.h
    include/ORBVocabulary.h)

# Set source files
set(
	SOURCE_FILES 
    src/main.cpp
    src/file_io.cpp)
  • 设置源文件和头文件
# executable files
add_executable(main ${SOURCE_FILES} ${HEADER_FILES})
  • 生成可执行文件
# executable files
add_executable(main ${SOURCE_FILES} ${HEADER_FILES})
  • 添加链接依赖库

完整文件:

cmake_minimum_required(VERSION 3.0)
project(test)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 -O3")
include_directories("include/")
# OpenCV
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

# Set header files 
set(
	HEADER_FILES
	include/file_io.h
	)

# Set source files
set(
	SOURCE_FILES 
    src/main.cpp
    )
# executable files
add_executable(main ${SOURCE_FILES} ${HEADER_FILES})
# target libraries 
target_link_libraries(main ${OpenCV_LIBS})
  • 如果链接库写成{OpenCV_LIBRARIES}可能出现undefined reference to XXX的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值