cmake相关学习记录

1.创造cmake要求和项目名称

cmake_minimum_required(VERSION 2.8) #项目名称

project(项目名称)

2.添加编译器定义

add_definitions(-std=c++11)
add_definitions("-Wall")
  • add_definitions(-std=c++11):添加编译器选项,使用 C++11 标准。
  • add_definitions("-Wall"):开启所有常规的警告信息。

以下我们以导入opencv包为配置环境举例

set(OpenCV_DIR "D:/opencv/build")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
  • set(OpenCV_DIR "D:/opencv/build"):设置 OpenCV 的安装路径。
  • find_package(OpenCV REQUIRED):查找 OpenCV 库,并设置相应的变量。
  • include_directories(${OpenCV_INCLUDE_DIRS}):包含 OpenCV 的头文件路径。

3,包含项目的头文件和库目录

include_directories(${OpenCV_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include)

link_directories(${OpenCV_DIR}/lib)
  • include_directories:包含项目的头文件目录。
  • link_directories:添加库文件目录,以便链接库文件。

4.设置 OpenCV 库列表

set(OpenCV_LIBS opencv_core 
                opencv_highgui 
                opencv_imgproc 
                opencv_imgcodecs 
                opencv_videoio)

set(OpenCV_LIBS ...):定义 OpenCV 库列表,将在链接时使用。

file(GLOB_RECURSE cpp_srcs ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/include/*.h)

file(GLOB_RECURSE cpp_srcs ...):递归搜索并收集项目中的所有源文件和头文件

5.链接各种库

add_library(DryEyeAlgorithm SHARED ${cpp_srcs})
target_link_libraries(你的项目 PRIVATE ${OpenCV_LIBS})
  • add_library(DryEyeAlgorithm SHARED ${cpp_srcs}):创建一个共享库 你的项目,并包含所有源文件。
  • target_link_libraries(DryEyeAlgorithm PRIVATE ncnn ${OpenCV_LIBS}):链接  OpenCV 库。

6.定义动态库接口

TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE DLL_API)

以DLL_API来定义API接口

7.安装指定目录

file(GLOB_RECURSE models ${PROJECT_SOURCE_DIR}/models/*)
install(TARGETS ${PROJECT_NAME}
		RUNTIME DESTINATION ${PROJECT_BINARY_DIR}/tests
		LIBRARY DESTINATION ${PROJECT_BINARY_DIR}/tests
		ARCHIVE DESTINATION ${PROJECT_BINARY_DIR}/tests
		)
install(FILES ${models} DESTINATION ${PROJECT_BINARY_DIR}/tests/models)
message(${PROJECT_SOURCE_DIR})
  • file(GLOB_RECURSE models ...):递归搜索并收集模型文件。
  • install(TARGETS ...):安装目标文件到指定目录。
  • install(FILES ${models} ...):安装模型文件到指定目录。

8.安装特定目录

set(BUILD_DIR "${PROJECT_SOURCE_DIR}/../buildx64")
set(TEST_DIR "${BUILD_DIR}/tests")

install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION ${TEST_DIR}
    ARCHIVE DESTINATION ${TEST_DIR}
)
  • set(BUILD_DIR ...):设置构建目录。
  • set(TEST_DIR ...):设置测试目录。
  • install(TARGETS ...):安装目标文件到指定目录。

9.打包好纯净版

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)
install(TARGETS ${PROJECT_NAME}
    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
    LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
    ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
)
file(GLOB_RECURSE include_files ${PROJECT_SOURCE_DIR}/include/*.h)
file(GLOB_RECURSE lib_files ${PROJECT_SOURCE_DIR}/114514/*.lib)

install(FILES ${include_files} DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
install(FILES ${models} DESTINATION ${CMAKE_INSTALL_PREFIX}/models)
install(FILES ${third_lib_files} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(FILES ${PROJECT_SOURCE_DIR}/readme.md DESTINATION ${CMAKE_INSTALL_PREFIX})

交给别人使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值