CMake总结

28 篇文章 5 订阅
14 篇文章 6 订阅


一、教程序列:

Linux之cmake的指令以及内部构建和外部构建

Linux 使用cmake构建OpenCV项目

CMake解决c++11的phread库问题:undefined reference to `pthread_create’

C/C++的头文件分开写法和在gcc/g++、cmake、VSCode上运行结果

二、CMakeLists.txt不同需求内容

1.最简单的CMakeLists.txt

# project name
PROJECT(HELLO)

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

执行的时候是./hello

2.使用c++11特性的CMakeLists.txt

基础模板:

# project name
PROJECT(HELLO)

# using C++11
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11")

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

如使用C++11的#include<thread>

  • 加个-pthread
# project name
PROJECT(HELLO)

# using C++11 and 线程
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread")

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})
  • 使用包Threads和链接${CMAKE_THREAD_LIBS_INIT}
# project name
PROJECT(HELLO)

# using C++11
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11")

# find Threads线程库
FIND_PACKAGE(Threads)

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

# after ADD_EXECUTABLE,为生成文件target添加库
TARGET_LINK_LIBRARIES(hello ${CMAKE_THREAD_LIBS_INIT})

3.OpenCV

# project name
PROJECT(HELLO)

# using C++11
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 ")

# cmake version
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)

# find OpenCV
FIND_PACKAGE(OpenCV REQUIRED)

# show the message of OpenCV
message(STATUS "OpenCV library status:")
message(STATUS "    version: 	${OpenCV_VERSION}")
message(STATUS "    headers: 	${OpenCV_INCLUDE_DIRS}")
message(STATUS "    libraries: 	${OpenCV_LIBS}")

# link headers
INCLUDE_DIRECTORIES({OpenCV_INCLUDE_DIRS})

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

# after ADD_EXECUTABLE,为生成文件target添加库
TARGET_LINK_LIBRARIES(hello ${OpenCV_LIBS})

4.OpenCV+thread库

# project name
PROJECT(HELLO)

# using C++11 and 线程
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread")

# cmake version
CMAKE_MINIMUM_REQUIRED(VERSION 3.5.1)

# find OpenCV
FIND_PACKAGE(OpenCV REQUIRED)

# show the message of OpenCV
message(STATUS "OpenCV library status:")
message(STATUS "    version: 	${OpenCV_VERSION}")
message(STATUS "    headers: 	${OpenCV_INCLUDE_DIRS}")
message(STATUS "    libraries: 	${OpenCV_LIBS}")

# link headers
INCLUDE_DIRECTORIES({OpenCV_INCLUDE_DIRS})

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

# after ADD_EXECUTABLE,为生成文件target添加库
TARGET_LINK_LIBRARIES(hello ${OpenCV_LIBS})

或另一种写法:

# project name
PROJECT(HELLO)

# using C++11 and 线程
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11")

# cmake version
CMAKE_MINIMUM_REQUIRED(VERSION 3.5.1)

# find OpenCV and Threads线程库
FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(Threads)

# show the message of OpenCV
message(STATUS "OpenCV library status:")
message(STATUS "    version: 	${OpenCV_VERSION}")
message(STATUS "    headers: 	${OpenCV_INCLUDE_DIRS}")
message(STATUS "    libraries: 	${OpenCV_LIBS}")

# link headers
INCLUDE_DIRECTORIES({OpenCV_INCLUDE_DIRS})

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST})

# after ADD_EXECUTABLE,为生成文件target添加库
TARGET_LINK_LIBRARIES(hello ${OpenCV_LIBS})
TARGET_LINK_LIBRARIES(hello ${CMAKE_THREAD_LIBS_INIT})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值