CMakeLists.txt----一点儿自己的经验教训

2023-05-16

被CMakeLists.txt坑过数次(大多是被自己蠢哭……),把用过的命令稍微记一下。
注意:中文空格等什么诡异字符,链接库的名字不要忘记,不要写错
好记性不如烂键盘~

add_library

生成库
如:
add_library( hello_shared SHARED libhello.cpp)
用libhello.cpp生成一个名字教唆libhello_shared.so的共享库,生成静态库.a的话去掉SHARED就可以了。

include_directories

需要include的头文件的目录,放到这个里面,以空格隔开
home目录的表示$ENV{HOME}/……
如:include_directories($ENV{HOME}/projects/newVideoRetrieval/include $ENV{HOME}/projects/newVideoRetrieval/include/ffmpeg)

link_directories

需要链接的第三方库的库文件的目录(.so和.a)
如:
link_directories($ENV{HOME}/projects/newVideoRetrieval/lib $ENV{HOME}/projects/newVideoRetrieval/lib/opencv)

add_executable

目标文件名,以及生成目标文件需要用的cpp
如:
add_executable(newvideoretrieval main.cpp ${src_list} ${utils_srclist})
用多个cpp文件时,使用set将cpp文件们生成一个变量,然后直接使用这个变量的值

set

如:set(src_list Parameters.cpp VideoDecode.cpp SceneCut.cpp)
在add_executable中,直接使用${src_list}就可以了

target_link_libraries

目标需要链接的库的名字,需要放在link_directories和include_directories之后,库的名字的写法:取lib之后,扩展名之前的那一部分。
如:
target_link_libraries(newvideoretrieval ev2641cdvs rtp_base avcodec)
最前面是target的名字

使用cmake,将一堆cpp和h文件,生成一个库

坑啊~自己摸索出来的
比如说现在有一个文件夹a,里面有许多子文件夹a1,a2,a3,各包含不少cpp和h文件,将它们编译生成一个liba.so或者liba.a这样的库。

1.在a目录下自己写一个CMakeLists.txt

使用aux_source_directory命令
如:
aux_source_directory(a1 src_a)
aux_source_directory(a1/a11 src_a)
aux_source_directory(a2 src_a)
把所有包含cpp的文件夹全写上,写到最后一级目录
然后写
add_library(a SHARED ${src_a})
就写完了一个简单的CMakeLists.txt

2.编译

在CMakeLists.txt同级目录下面,即a的下一级目录
mkdir build
cd build
cmake ..
make
即可,build目录下就会出现想要生成的.so文件,用的时候注意引用头文件以及填写链接库的名字a。

记下一些经验教训以备……忘了>_<

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMakeLists.txt----一点儿自己的经验教训 的相关文章

  • [ROS](03)CMakeLists.txt详解

    文章只是个人学习过程中学习笔记 xff0c 主要参考ROS教程1 目录 1 概述2 CMakeLists txt文件2 1 遵循的格式和顺序2 2 文件解析2 3 find package 2 4 catkin package 1 概述 C
  • CMake、CMakeLists.txt

    2022 06 02 xff0c 今天开始研究cmake 不间断更新 一 说明 0 官方文档网址 xff1a www cmake org 1 cmake的定义 xff1a 高级编译配置工具 当多个人用不同的语言或者编译器开发一个项目 xff
  • cmake学习1:基本的CMakeLists的编写

    前言 自己在使用cmake进行编译工程的时候不太了解cmake的基本使用方法 有时候出现找不到第三方库的问题也不知如何排查 因此相对cmake有个稍微系统的认识 希望能用这个强大的工具来更好的为自己的工程服务 因此总结为了几篇博客 主要参考
  • ROS CMakeLists.txt中catkin_package和INCLUDE_DIRS的区别

    CMakeLists txt中 catkin package INCLUDE DIRS include 这里代表的是catkin的构建选项 xff0c INCLUDE DIRS表示将使用INCLUDE DIRS后面的内部目录include
  • ROS Catkin 教程之 CMakeLists.txt

    1 概览 CMakeLists txt 是用 CMake 构建系统构建 ROS 程序包的输入文件 任何兼容 CMake 的包都包含一个或多个 CMakeLists txt 文件 xff0c 用以描述怎样构建和安装代码 catkin 项目采用
  • CMakeList.txt写法

    ROS 创建并运行一个c 43 43 的demo xyzxyz576的博客 CSDN博客 目录 样例 解释如下 1 确定cmake最低版本需求 2 确定工程名 3 添加需要的库 4 添加需要的头文件 5 确定编译语言 6 设定变量 7 添加
  • 55、记录标注的关键点和目标检测数据集,进行目标检测标注文件和关键点文件分离以及yolov5.txt标注格式转xml数据集

    基本思想 xff1a 手中存在一份关键点检测模型 xff0c 因为客户把检测框和目标关键点框都标注在一起了 xff0c 所以进行一下剥离 代码一 xff1a 从关标注数据集剥离目标检测 coding utf 8 import cv2 imp
  • python 读取一个文件夹下的所jpg文件保存到txt中

    最近需要使用统计一个目录下的所有文件 xff0c 使用python比较方便 xff0c 就整理了一下代码 1 import os 2 3 def gci filepath 4 files 61 os listdir filepath 5 f
  • ROS CMakeLists.txt中的 target_link_libraries

    span class token function target link libraries span span class token punctuation span span class token punctuation span
  • cmake & CMakeLists.txt

    文章目录 前言先从体验开始1 一个最简单的例子 xff1a 2 例子升级 xff0c 将hello c生成为一个库 xff1a 3 例子升级 xff0c 将源代码和库分开放 xff1a 4 让可执行文件在 bin 目录 xff0c 库文件在
  • CMakeLists.txt中第三方库编写思考

    编写ROS时经常需要自己构建第三方库或者引用别人的第三方库 xff0c 对于第三方库的调用主要有以下两种方式 xff1a 1 引用现成的第三方库 xff1a find package PCL 1 7 REQUIRED xff1a 添加依赖
  • QT中CMakeLists添加第三方库

    1 新建项目 xff0c 打开CMakeLists txt文件 cmake minimum required VERSION 2 8 project fp test cm 括号内fp test cm为项目名称 add executable
  • Cmakelists配置多级目录的gtest项目(项目代码和测试代码分离)

    cmake一些语法定义 之前的博客主要写了怎么配置gtest项目 xff0c 但是一般项目代码和测试代码并不在一起 xff0c 所以尝试将代码分离 主要分成三个部分 xff0c 下面给出demo的分级目录 gtest demo CMakel
  • 学习cmake的使用和CMakeLists.txt

    1 学习cmake的使用和CMakeLists txt 文章目录 1 学习cmake的使用和CMakeLists txt1 1 cmake外部构建基础1 2 让每个源文件目录都包含一个CMakeLists txt1 3 安装 1 4 构建静
  • NDK--CMakeLists配置第三方so库

    当我们创建一个NDK工程时 xff0c 会自动创建一个CMakeLists txt的文件 xff0c 在AS中c 43 43 的编译器是使用LLVM xff0c 规则为cmake xff0c 今天来学习下cmake的基本套路 首先 xff0
  • Make、Makefile、CMake和CMakeLists

    一 Make 在 认识编译器和C C 43 43 编译 一文中介绍过 xff0c 一个 c cpp 文件从源文件到目标文件的过程叫做编译 xff0c 但是一个项目中不可能只存在一个文件 xff0c 这就涉及到多个文件的编译问题 xff0c
  • Makefile以及CMakelists的编辑

    1 概念 在linux中不像windows和mac有图形界面 xff0c 怎么快速的用命令行运行大型项目成为一个问题 xff0c 并且像c c 43 43 需要自己添加include文件的位置 xff0c 当文件数目变多的时候 xff0c
  • Android Studio3.4.2新建C++项目,CMakeLists批量添加代码编译不过的坑

    上段时间升级了AS到3 4 2 最后新建了个C 的项目 然后生成的那个native lib cpp文件就可以编译 但是我的项目里 C 代码文件非常多 显然一个一个地添加太慢了 然后就想批量添加进去 但总是编译不过 真是orz 像上图这样 批
  • 如何在python中修改Yolo .txt文件的值

    我想修改包含 txt 文件的文件夹 txt 文件如下所示 3 0 695312 0 523958 0 068750 0 052083 3 0 846875 0 757292 0 071875 0 031250 3 0 830469 0 71
  • 使用powershell从txt文件中提取带有两个分隔符的列

    我有一个sample txt 文件 Processing Cl Cog u l Cg txt V DM Nv AL Ft He Se Fe Bt L Ey 0 Ct Cu3 我需要将此文件分成 4 个不同的列 并在之前添加新列 输出 csv

随机推荐

  • jquery ajax无刷新请求Struts2验证用户名密码数据库是否存在

    通过ajax请求验证后台数据是否存在 首先导入struts2的核心包 后台Action代码 import com opensymphony xwork2 ActionSupport public class CodeCheckAction
  • 手把手教你们通过jquery ajax调用查询java struts2后端数据+js拼接字符串

    1 首先新建一个web项目 xff0c 创建一个User实体 package com qm entity public class User private String id private String name private Str
  • python检查URL是否能正常访问

    今天 xff0c 项目经理问我一个问题 xff0c 问我这里有2000个URL要检查是否能正常打开 xff0c 其实我是拒绝的 xff0c 我知道因为要写代码了 xff0c 正好学了点python xff0c 一想 xff0c python
  • js自己写脚本自动操作注册插件,基于chrome浏览器

    大家好 xff01 又到了一周的福利时间 xff0c 今天给大家一个福利 xff0c 以后抢票不需要手动刷新页面了 xff0c 直接用你自己写的插件来控制 xff0c 事先声明 xff0c 本人是js菜鸟 xff0c 所以今天带来的例子都是
  • VMware Workstation Proa安装mac镜像

    首先你得有一个VMware 然后下载好mac镜像文件还有for OS X插件补丁 我这里都已经下载好了 xff0c 又需要的可以在评论里留下邮箱地址 xff0c 我分享给你 现在该有的文件都有了 xff0c 那么我们开始 首先VMware镜
  • Spring事务管理的四种方式(以银行转账为例)

    文章转自 https blog csdn net daijin888888 article details 51822257 本文配套示例代码下载地址 xff08 完整可运行 xff0c 含sql文件 xff0c 下载后请修改数据库配置 x
  • redis秒杀系统数据同步(保证不多卖)

    原文链接 http www cnblogs com shihaiming p 6062663 html 东西不多卖 秒杀系统需要保证东西不多卖 xff0c 关键是在多个客户端对库存进行减操作时 xff0c 必须加锁 Redis中的Watch
  • csdn过滤广告谷歌浏览器插件

    首先要知道浏览器插件的原理 通过访问网站 xff0c 加载我们写的js脚本 这样我们就可以对你所要操作的网站进行操作啦 xff01 首先看看谷歌的广告的代码块 如果换成你在开发这个网站 xff0c 肯定直接隐藏这个class 为 csdn
  • PX4源码分析1_PX4源码的下载和编译

    一 基本信息 xff1a 1 软件系统 xff1a Ubuntu 14 04 64bit 2 源码位置 xff1a https github com PX4 Firmware 3 参考博客 xff1a xff08 1 xff09 libin
  • PX4源码分析5_PX4启动流程

    PX4启动流程 xff0c 分为4步 xff1a 1 start xff1a 上电之后程序入口为Firmware NuttX nuttx arch arm src stm32 stm32 start c中的 start函数 xff0c 负责
  • 华为、TCL、大疆面试经历!32K高薪996和18K朝九晚五,我该怎么选?

    背景 楼主双非吊车尾一本毕业 xff0c 14年正式进入编程行业 xff0c 从事Android移动开发 一些个人的原因 xff0c 年前从一家公司裸辞 xff0c 带着老婆孩子离开了杭州 本想着回家过完年也就差不多赶上 金三银四 黄金季
  • PX4源码分析6_uorb通信机制

    一 创建流程 xff1a 在Firmware msg下创建msg文件 xff0c eg xff1a xxx msg xff0c 内容格式仿照原有msg文件在Firmware msg CMakeLists txt中将对应的msg文件添加 xf
  • PX4源码分析7_添加mavlink自定义消息

    一 自定义mavlink消息 xff1a 根据uorb消息 xff08 msg xff09 自定义mavlink消息 方法为利用mavlink generator工具在xml文件生成mavlink所需相应的头文件 二 发送自定义mavlin
  • Unix网络编程中第一个例子出现connect error: Connection refused

    这个问题我来回答 xff0c linux 现在因为安全问题 xff0c 各个发行版本默认是不开daytime服务的 由于要打开端口 xff0c 所以服务端程序需要用root权限执行 xff0c 所以你可以先 sudo daytimetcps
  • linux内存分配方法

    基于linux 驱动开发以及应用开发 当想要分配内存的时候 要面对很多的内存分配函数 malloc kmalloc vmalloc alloc page dma alloc 简单归纳如下 malloc 分配用户空间内存 不保证物理连续 xf
  • 算术移动和逻辑移动

    算术左移 逻辑左移 算术右移 逻辑右移有什么不同 算术左移 xff1a 末尾添0 xff1b 逻辑左移 xff1a 末尾添0 xff1b 算术右移 xff1a 左端最低位填充 xff1b 逻辑右移 xff1a 左端添0 算术左移和算术右移主
  • 素数的验证范围到数的开方

    假设范围大于数的开方 xff0c 则另个数必定小于数的开方 若两个数都大于数的开方 xff0c 则相乘必定大于这个数 所以只需要验证2到这个数的开方范围内就可以
  • CPU时间

    CPU时间 xff08 进程时间 xff09 xff1a 用户CPU时间 43 系统CPU时间 用户CPU时间 xff1a 用户态进程执行时间 系统CPU时间 xff1a 内核态进程执行时间 时钟时间 xff08 墙上时钟时间 xff09
  • 硬中断、软中断和信号

    硬中断是外部设备对CPU的中断 xff0c 软中断是中断底半部的一种处理机制 xff0c 信号则是由内核 xff08 或其他进程 xff09 对某个进程的中断 硬中断是由外部事件引起的因此具有随机性和突发性 xff1b 软中断是执行中断指令
  • CMakeLists.txt----一点儿自己的经验教训

    被CMakeLists txt坑过数次 xff08 大多是被自己蠢哭 xff09 xff0c 把用过的命令稍微记一下 注意 xff1a 中文空格等什么诡异字符 xff0c 链接库的名字不要忘记 xff0c 不要写错 好记性不如烂键盘 xff