bazel一些用法

2023-05-16

1.编译东西 要在根目录下,和WORKSPACE在同一级

例如,对于bazelbuild/examples
而BUILD文件一般与源文件并列

examples
└── cpp-tutorial
    ├──stage1
    │  └── main
    │      ├── BUILD
    │      ├── hello-world.cc
    │  └── WORKSPACE

进入到cpp-tutorial/stage1目录下(要进入到这个目录后可以直接看到WORKSPACE),然后运行以下指令:

bazel build //main:hello-world       ( Labels start with //)

注意target中的//main:是BUILD文件相对于WORKSPACE文件的位置,hello-world则是我们在BUILD文件中命名好的target的名字。如果省略冒号,则假定目标名称与程序包名称的最后一个组成部分相同(???)。

2.头文件怎么引入,头文件路径问题

在这里插入图片描述
正常在rs_common模块
在这里插入图片描述
包含头文件应该从WORKSPACE所在的路径开始包含,(完整的路径,从WORKSPACE为根开始写)
比如

#include "rs_common/yaml/yaml_parser.h"

其实应该

#include "modules/rs_common/include/rs_common/yaml/yaml_parser.h"

解决这个问题的方法,是在rs_common模块下的BUILD
在这里插入图片描述
在这里插入图片描述

cc_library(
        name = "rs_yaml",
        hdrs = ["include/rs_common/yaml/yaml_parser.h"],
        srcs = [
            "src/yaml/yaml_parser.cpp",
            "include/rs_common/debug/prompt.h",
        ],
        deps = [
            ":encryptor",
            "@yaml_cpp//:yaml-cpp",
        ],
        copts = [
            "-Imodules/rs_common/include",
            # "-Iexternal/yaml_cpp/include",            # 因为yaml库中写了includes配置项,includes可以继承
            "-O3",
            "-Wall",
            "-std=c++11",
            "-fPIC",
        ],
        linkopts = ["-lstdc++fs"],
        includes = ["include"],
        )

如果不写,会报类似如下的错误:

ERROR: /home/zxj3/code/bazel_test/rs_read_RTK/BUILD:3:11: C++ compilation of rule '//rs_read_RTK:rs_RTK' failed (Exit 1) gcc failed: error executing command /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++0x' -MD -MF ... (remaining 16 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
rs_read_RTK/src/rs_RTK.cc:2:10: fatal error: include/rs_RTK.h: No such file or directory
 #include "include/rs_RTK.h"
          ^~~~~~~~~~~~~~~~~~
compilation terminated.
INFO: Elapsed time: 0.187s, Critical Path: 0.04s
INFO: 0 processes.
FAILED: Build did NOT complete successfully

而BUILD中包含是从BUILD所在路径包含的
在这里插入图片描述

总结:

写.cpp .h时,包含头文件路径以WORKSPACE路径为根
写BUILD源文件路径时,以BUILD路径为根

3.:和@和// :

在这里插入图片描述
":"表示依赖来自于文件内部
在这里插入图片描述
"@“表示来自于外部WORKSPACE,”//"大概也是这个用法
在这里插入图片描述
编译时,

bazel build //modules/rs_common...

rs_common里面所有target都会编译

bazel build //modules/rs_common...
bazel build //modules/rs_common:rs_yaml

在这里插入图片描述

4.copts可以理解为gcc传-D -I参数

5.grep -r “字符串” 查字符串

先把改好的三个模块放在阿波罗一起编译
编译速腾rs_demo美引入Cyber RT看看编译是否通过
再看改了之后编译

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

bazel一些用法 的相关文章

随机推荐

  • Sed与AWK入门教程之Sed篇

    Sed和AWK是 nix命令行里面文本处理的神器 相当的强大 它们都是面向行的 或者说它们处理文本的方式都是一行接着一行的处理 从标准输入或者文件中读取内容 一行一行的执行脚本命令 然后打印输出到标准输出 直到文件结尾 EOF Sed Se
  • 老鸟的Python入门教程

    重要说明 这不是给编程新手准备的教程 如果您入行编程不久 或者还没有使用过1到2门编程语言 请移步 这是有一定编程经验的人准备的 最好是熟知Java或C 懂得命令行 Shell等 总之 这是面向老鸟的 让老鸟快速上手Python教程 为什么
  • 2022-2-28 T265 追踪相机 vrep逆运动学

    安装realsense SDK Ubuntu 16 安装realsense SDK 需要注意相机坐标系到机械臂坐标系的转变 下一步还需要完成末端的深度相机标定 realsense自带的API功能很全了 得到的追踪相机位姿直接融入之前的qt工
  • 运动规划-深蓝学院-高飞

    运动规划 正文一课程介绍outline xff1a map参考资源 二基于搜索DijkstraA grid based path search跳点jump point search 采样算法概率路线图prm快速搜索随机数 rrt 三带动力学
  • 在Intel nuc上使用自己的相机(Intel RealSense D435i)运行VINS-Mono及问题记录

    文章目录 一 遇到的问题 二 基础环境搭建 Step 1 安装 ROS Kinetic Step 2 安装Intel RealSense SDK Step 3 安装 Intel RealSense ROS Step 4 检验是否能在ros使
  • install opencv-contrib-dev to use aruco code

    using tsinghua sources list sudo apt get install libopencv contrib dev include so directory add so directory
  • Linux编译C文件

    熟悉了Windows平台下编译一个C 43 43 工程后 xff0c 你是否会提出这样一个问题 xff1a 在Linux平台下又如何编译一个C 43 43 工程呢 xff1f 希望本文能给正在学习或想学习Linux C 43 43 开发的你
  • 学习笔记——atoi函数的用法及用C语言实现atoi

    学习笔记 atoi函数的用法及用C语言实现atoi from csdn 库函数原型 xff1a inclue lt stdlib h gt int atoi const char nptr 用法 xff1a 将字符串里的数字字符转化为整形数
  • 互斥信号量和二进制信号量的区别

    互斥信号量和二进制信号量的区别 互斥型信号量必须是同一个任务申请 xff0c 同一个任务释放 xff0c 其他任务释放无效 同一个任务可以递归申请 二进制信号量 xff0c 一个任务申请成功后 xff0c 可以由另一个任务释放 二进制信号量
  • 堆栈区别

    堆和栈的区别 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数的参数值 xff0c 局部变量的值等 其操作
  • 用四个砝码称出1—40克所有重量,四个砝码分别为多少? 梅氏砝码问题

    这个在数学上叫做梅氏砝码问题 xff0c 其叙述如下 xff1a 若有n个砝码 xff0c 重量分别为M1 M2 xff0c Mn 且能称出从1到 xff08 M1 43 M2 43 43 Mn 的所有重量 xff0c 则再加一个砝码 xf
  • Linux 文件夹 压缩 命令

    from http hi baidu com no fear no hope blog item 8182155aec16a7c59d82046d html Linux 文件夹 压缩 命令 2011年08月28日 星期日 22 02 Lin
  • mysql 分库分表

    分表是分散数据库压力的好方法 分表 xff0c 最直白的意思 xff0c 就是将一个表结构分为多个表 xff0c 然后 xff0c 可以再同一个库里 xff0c 也可以放到不同的库 当然 xff0c 首先要知道什么情况下 xff0c 才需要
  • MySQL的数据库引擎的类型

    你能用的数据库引擎取决于mysql在安装的时候是如何被编译的 要添加一个新的引擎 xff0c 就必须重新编译MYSQL 在缺省情况下 xff0c MYSQL支持三个引擎 xff1a ISAM MYISAM和HEAP 另外两种类型INNODB
  • Fast-Planner安装、环境配置以及问题解决

    Fast Planner是香港科技大学沈劭劼老师团队开源的项目 旨在复杂的未知环境中实现四旋翼快速飞行 Fast Planner的github网址为 https github com HKUST Aerial Robotics Fast P
  • 安装双系统出现的一些问题(显卡和无法连接WIFI)

    显卡 问题1 xff1a 安装双系统之后开机黑屏 xff0c 由于显卡引起 xff0c 显卡不支持 解决办法 xff1a 禁用独立显卡或者更改显卡设置 xff0c 进入文件 boot grub grub cfg xff0c 按下图加入标亮字
  • ros没装全,gazebo模型加载不出来

    ros没装全 xff0c gazebo模型加载不出来 安装ros 关于rosdep update 首先换热点试一下 xff0c 在来回切换wifi 按照https blog csdn net yufeng1108 article detai
  • catkin_make遇到 gazebo_ros_controlConfig.cmake相关的问题

    现象 xff1a Could not find a package configuration file provided by gazebo ros control with any of the following names 解决方法
  • 一些vscode自动提示报错

    Pointer to incomplete class type is not allowed 通常是由于类声明了但是没有定义造成的 xff0c 需要做的是在错误文件里面引用下这个类 xff1a class Test xff1b a poi
  • bazel一些用法

    1 编译东西 要在根目录下 xff0c 和WORKSPACE在同一级 例如 xff0c 对于bazelbuild examples 而BUILD文件一般与源文件并列 examples cpp tutorial stage1 main BUI