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})
发布了57 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38258767/article/details/103833861