CMAKE基础使用

1、目录结构:
在这里插入图片描述
2、顶层cmake内容:

cmake_minimum_required(VERSION 3.0)  //开头,指定cmake的最低版本要求
set(LIB_DIR ./libs) //设置生成的库的路径 
set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/install) //创建install文件夹
//LIBRARY_OUTPUT_PATH cmake的环境变量,自动把生成的库拷贝到 ${OUTPUT_DIR}/lib文件夹下面
set(LIBRARY_OUTPUT_PATH ${OUTPUT_DIR}/lib)
//EXECUTABLE_OUTPUT_PATH cmake的环境变量,
//自动把生成的可执行文件拷贝到${OUTPUT_DIR}/bin文件夹下面
set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}/bin)
//添加子文件夹 这个一定要在前面三句话后面,否则无法拷贝
add_subdirectory(src)
add_subdirectory(sample)
//找到指定的文件
file(GLOB_RECURSE HPP_SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/include/imsee.hpp)
//把指定的文件拷贝到${LIBRARY_OUTPUT_PATH}/../include 这个目录下面 如果目录不存在就创建一个
file(COPY ${HPP_SRC_LIST} DESTINATION  ${LIBRARY_OUTPUT_PATH}/../include)
//找到指定的文件
file(GLOB_RECURSE SAMPLE_SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/sample/main.pp)
file(COPY ${SAMPLE_SRC_LIST} DESTINATION  ${LIBRARY_OUTPUT_PATH}/../sample)

3、src目录里面的内容
在这里插入图片描述
CMakeLists.txt的内容:

//指定头文件所在的路径
include_directories(../include)


//想要生成的工程的名字 这个会默认设置PROJECT_NAME这个变量
//sensor 这个是version.cmake 里面定义的数值,在顶层cmake里面包含,底层直接用
project(imsee VERSION sensor)
//

set(SRC imsee.cpp)
//指定需要链接的库 ,这个cmake会自动的查找
link_libraries(pthread)

//生成动态库 顶层cmake会自动把生成的动态库拷贝到顶层cmake设置的路径里面
add_library(imsee SHARED ${SRC})
//每次在生成库之前先删除原来生成的库
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND rm -f ${LIBRARY_OUTPUT_PATH}/lib${PROJECT_NAME}.so*)
//设置生成的动态库库的版本,cmake会自动加上lib前缀  最好和project的名字保持一致
//不添加这个  SOVERSION 1 库就只生成一个符号链接
set_target_properties(imsee PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1)

生成的库:
在这里插入图片描述
4、sample里面的内容
在这里插入图片描述
CMakeLists.txt的内容:

//指定cmake的最低版本
cmake_minimum_required(VERSION 3.0)
//设置生成的可执行文件的名字
project(Imsee)
//指定头文件按路径
include_directories(../include)
//把SRC_DIR变量设置为main.cpp
set(SRC_DIR ./main.cpp )
//链接的库的路径
link_libraries(${CMAKE_CURRENT_SOURCE_DIR}/../install/lib/libimsee.so)
link_libraries(${CMAKE_CURRENT_SOURCE_DIR}/../libs/libusb-1.0.so)
link_libraries(pthread)
//找到opencv的库,cmake自带的
find_package(OpenCV 3 REQUIRED) #在设置的地址下,查找opencv
//找到后指定opencv的头文件
include_directories(${OpenCV_INCLUDE_DIRS})
//链接opencv的库
link_libraries(${OpenCV_LIBS})
//生成可执行文件 Imsee 最好和project的名字一样
add_executable(Imsee ${SRC_DIR})

5、添加版本
1)创建Version.cmake
内容为:
set(sensor 0.0.1)
2) 包含这个.cmake 文件
include(${CMAKE_CURRENT_SOURCE_DIR}/Version.cmake)
3) 各个模块在使用的时候,project()里面添加这个变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值