CMakeList编写

CMakeList.txt编写指南

最近遇到一个没有给CMakeList.txt的项目,因编译需求,决定自行编写CMakeList.txt(新手一枚,先学习后编写再编译)。

1. 确定cmake最低版本需求

cmake_minimum_required(VERSION 3.0.0) 

cmake的最低版本为3.0.0

2. 确定工程名

project(FaceDetector VERSION 0.1.0)

工程名为FaceDetector,版本为0.1.0

3. 设置变量值

set(BUILD_DIR "${PROJECT_SOURCE_DIR}/build")  #BUILD_DIR不是预定义变量
set(CMAKE_CXX_STANDARD 17)  #CMAKE_CXX_STADNARD为预定义变量
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV") #在原有的基础上增加路径

set操作可以看为变量赋值操作,格式为:

set(var dir1 [dir2]

4. 添加编译信息

add_definitions(-w)

用于添加编译器定义选项的命令

5.添加需要的库

find_package(gmp 1.7 REQUIRED)

搜索名为gmp的1.7版本的库,并作为项目依赖项(由REQUIRED指定

6. 添加需要的头文件

include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(/usr/local/cuda-8.0/include/)

两种添加头文件的方法但都是include_directories(DIR_PATH)
include_directories() 是一个全局函数,会将指定的目录应用于整个项目中的所有目标,而 target_include_directories() 是一个针对特定目标的函数,可以为每个目标单独指定包含目录。

7. 设置源码

set(SRC 
    ${PROJECT_SOURCE_DIR}/src/detector.cpp
    ${PROJECT_SOURCE_DIR}/src/demo.cpp
    ${PROJECT_SOURCE_DIR}/test.cpp
)

8. 添加并编译动态库

link_directories(${PROJECT_SOURCE_DIR}) #指定链接器在构建过程中查找库文件的路径
target_link_libraries(plate_recognition -llianghao -lpthread -lm -lstdc++) # 将其他的库链接到 “plate_recognition” 库中。这里列出了要链接的库的名称,包括 “lianghao”、“pthread”、“m” 和 “stdc++”

9. 指定生成目标

add_executable(Test main.cpp) # 源为main.cpp 目标为Test
add_executable(Test main.cpp)

注意:这里只需要添加自己写的源文件

10.总结

  1. target_link_libraries是动态链接,当然要放到add_executable之后了
  2. 可以用include_directories添加自己写的头文件
  3. add_executable时,需要将自己的所有源文件都放进去,但必须包含main.c(cpp)
  4. 可以使用:
file(GLOB_RECURSE ALL_CPP "facedetector/*.cpp" "boosting/*.cpp")

获取所有源文件!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值