当前位置: 首页 > news >正文

CmakeLists.txt相关

恩培计算机视觉

一、动态库和链接分开生成

1.1、生成动态库

# 最低版本要求
cmake_minimum_required(VERSION 3.10)
#项目信息
project(Account)# 指定生成目标:动态库
# 三个参数分别是:库名称、库类型、源文件
# linux下库的全名为:libAccount.so(动态库)/libAccount.a(静态库)
add_library(Account SHARED Account.cpp)#STATIC是静态库

1.2、链接的部分

# 最低版本要求
cmake_minimum_required(VERSION 3.10)
#项目信息
project(test_acount)#添加可执行文件目标(target)
add_executable(test_account main.cpp)#为目标添加头文件目录
target_include_directories(test_account PUBLIC "../account_dir")
#为目标添加库文件目录
target_link_directories(test_account PUBLIC "../account_dir/build")
#为目标链接库
target_link_libraries(test_account Account)

查看动态库依赖关系

ldd ./build/test_account

二、动态库和链接一起生成(先添加动态库、在添加可执行文件)

# 最低版本要求
cmake_minimum_required(VERSION 3.10)
#项目信息
project(test_acount)#为目标添加库
add_libraries(Account SHARED "account_dir/Account.cpp" "account_dir/Account.h")#添加可执行文件目标(target)
add_executable(test_account "test_account/main.cpp")#为目标添加头文件目录
target_include_directories(test_account PUBLIC "../account_dir")#为目标链接库
target_link_libraries(test_account Account)#因为在一个里面,不需要寻找

三、其他语法相关

3.1 设置变量

set(arch ${CMAKE_HOST_SYSTEM_PROCESSOR})

3.2 打印

message("CMAKE_BUILD_PYTHON: $ENV{USE_Python}")

3.3 使用了CMake的file(GLOB_RECURSE)命令来递归地收集指定目录下的所有符合特定模式的文件,并将这些文件的路径存储在一个变量中。具体来说:

file(GLOB_RECURSE FASTBEV_CORE_FILES …):这是CMake的一个命令,用于生成一个包含所有匹配文件的列表。GLOB_RECURSE选项表示递归地搜索子目录。FASTBEV_CORE_FILES是一个变量名,用于存储搜索到的文件列表。

file(GLOB_RECURSE FASTBEV_CORE_FILES src/fastbev/*.cu src/fastbev/*.cppsrc/common/tensor.cusrc/common/tensorrt.cpp
)

3.4 寻找依赖find_package

#寻找gflags库,REQUIRED表示必须存在,否则报错
find_package(gflags REQUIRED)
if(gflags_FOUND)#为目标添加头文件目录target_include_directories(find_demo PUBLIC ${gflogs_INCLUDE_DIR})#为目标链接库target_link_libraries(find_demo  ${gflogs_LIBRARIES})
else()massage(FATAL_ERROR  "gflogs not found")
endif()

文章转载自:

http://zyTblZFn.hryhq.cn
http://SMGCPxJb.hryhq.cn
http://vFDKqlIc.hryhq.cn
http://0LFjUReB.hryhq.cn
http://t4DCHAfr.hryhq.cn
http://bE676Kwd.hryhq.cn
http://7mcmJXR0.hryhq.cn
http://7pT1Wgqj.hryhq.cn
http://H906eSGD.hryhq.cn
http://kyz9Fofb.hryhq.cn
http://W1kazfMp.hryhq.cn
http://ghep2Djc.hryhq.cn
http://tTLxenFF.hryhq.cn
http://8cCYsqFT.hryhq.cn
http://Geg46Gh3.hryhq.cn
http://NNnVfu2D.hryhq.cn
http://SZtFsS01.hryhq.cn
http://OrLQ7ggW.hryhq.cn
http://xDZM9xg5.hryhq.cn
http://L7I9eUDw.hryhq.cn
http://6Lgi8dia.hryhq.cn
http://C02nBNQc.hryhq.cn
http://eqalC21s.hryhq.cn
http://xZMv4nst.hryhq.cn
http://7SrYt7BK.hryhq.cn
http://5jz5Fiq1.hryhq.cn
http://n3PIJT90.hryhq.cn
http://BaZkGKyZ.hryhq.cn
http://mvpfx39m.hryhq.cn
http://Xy72F7Wc.hryhq.cn
http://www.dtcms.com/a/367581.html

相关文章:

  • PAT 1093 Count PAT‘s
  • Python 实战:内网渗透中的信息收集自动化脚本(9)
  • 竞业限制补偿金怎么算?一次性支付要交税吗?人事系统帮你理清这些坑!
  • 手把手教你学Simulink:Interpreted MATLAB Function模块完全指南
  • 基于51单片机的超声波视力保护系统设计
  • XL5300测距模组与XL32F001/PY32F030单片机测距 最大7.6M距离测量
  • 【问题记录】Anaconda的jupyter NoteBook点击launch的时候,弹出的页面提示ERR_FILE_NOT_FOUND
  • vector 题目练习 算法代码分析 代码实现
  • 每日工作计划管理工具:核心功能详解
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
  • 【VLMs篇】05: MiniCPM-V 4.5 技术架构详解与代码深度解读
  • Spring Boot 根据配置优雅的决定实现类
  • Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?
  • 揭秘“强关联”世界的隐形力量:科学家首次实现对复杂材料的“化学级”精确模拟
  • 个股场外期权行权期限有哪些规定?
  • fpga iic协议
  • 关于嵌入式学习——嵌入式硬件3
  • Function Call实战:用GPT-4调用天气API,实现实时信息查询
  • 2025年热门视频转文字工具测评,助你快速把视频转成文字稿!
  • 基于SpringBoot的家政保洁预约系统【2026最新】
  • C语言中calloc函数
  • flowable基础入门
  • PDF24 Creator:免费的多功能PDF工具
  • 数据可视化大屏精选开源项目
  • rh134第二章复习总结
  • 搭建机器学习模型的数据管道架构方案
  • 富士施乐DocuCentre S2110故障代码01
  • 机器学习 - 使用 ID3 算法从原理到实际举例理解决策树
  • 智能家居芯片:技术核心与创新突破
  • (D题|矿井突水水流漫延模型与逃生方案)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合