首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake学习笔记

这是您运行cmake命令的目录 CMAKE_CURRENT_BINARY_DIR 您当前所在的build目录 PROJECT_BINARY_DIR 当前项目的build目录 源文件变量 创建包含源文件的变量可以使您更清楚地了解这些文件...相反,通常直接在add_xxx函数声明源。 这对于glob命令尤其重要,如果添加新的源文件,这些命令可能不会始终为您显示正确的结果。...填充目录 在此示例,我们使用target_include_directories()函数来包含库目录,scope设置为PUBLIC。...传递给target_include_directories的目录将是包含目录树的根,并且C++文件应包括从此处到的路径。...Assertions ASSERT_*版本失败时会产生致命故障,并中止当前函数。EXPECT_*版本会产生非致命故障,不会中止当前函数。通常EXPECT_*是首选,因为它们允许在测试中报告多个故障。

1.3K00

gcc用法以及静态动态链接

-I:指定include包含文件的搜索目录 -o:输出成指定文件名,如果缺省则输出位a.out -L:搜索库的路径 -l:指定程序要链接的库 -w:忽略所有警告 -shared:指定生成动态链接库...就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的lib和尾.so去掉就是库名了。...gcc默认会在程序当前目录、/lib、/usr/lib和/usr/local/lib下找对应的库 -I参数 -include和-I参数 在你是用#include '***.h'的时候,gcc/g+...+会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他回先在你所制定的目录查找,然后再按常规的顺序去找.对于#include,gcc/g++会到-I制定的目录查找...而用""号包含的头文件会首先搜索当前的工作目录,之后的搜索路径才是和号包含的头文件所搜索的路径一样的路径。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

SLAM——Linux操作学习

首先在/home 目录下创建一个文件夹,里面创建若干文件夹 mkdir slambook cd slambook mkdir cood cd cood mkdir ch2 cd ch2 现在已经进入到...g++ g++ helloSLAM.cpp //默认编译过来可执行文件的名称是a.out,自己命名可以将指令改为 g++ -o helloSLAM.out helloSLAM.cpp 然后在当前目录下运行此程序即可...2、使用CMake进行编译 仍然以上面helloSLAM.cpp为例,这次我们不是直接使用g++,而是用cmake来制作一个工程,然后编译它,并在其目录下新建一个CMakeLists.txt文件,内容如下...如果想增加一个可执行文件,只需要在CMakeList.txt添加一行“add_executable()”就可以了 现在在文件的当前目录下,调用cmake对该工程进行分析(在该当前目录ch2下新建一个build...文件然后进如build文件进行cmake是生成文件不会与源文件之类的搞混淆,使用一下命令,否则使用cmake .): mkdir build cd build cmake ..

76620

【ProtoBuf】2.环境配置

配置环境变量 下载完之后将压缩包解压在某一个位置,打开解压后的文件夹: 进入bin目录,将其中的地址复制下来 搜索:“编辑系统环境变量” 并进入 点击: 接下来: 三.验证是否添加成功 打开终端...解压压缩包 命令:unzip protobuf-all-21.11.zip 解压后的这个目录中就是源码内容。 通过里面的文件就可以将程序真正的安装了。 3....如果选择了第⼆种执⾏⽅式,即修改了安装⽬录,那么还需要在/etc/profile添加⼀些内容: sudo vim /etc/profile # 添加内容如下: #(动态库搜索路径) 程序加载运⾏期间查找动态链接库时指定除了系统默认路径之外的其他路径.../bin/ #c程序⽂件搜索路径 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/ #c++程序⽂件搜索路径 export...升级g++到8版本 上述提到,g++不提高到最新版本在后续操作会头文件报错,因此下面我们配置g++编译器 【解决】升级g++到8版本_每天都要进步呀~的博客-CSDN博客

36030

HTTP 返回状态值详解

6、Http/1.1 404 Not Found 文件或目录不存在   表示请求文件、目录不存在或删除,设置404错误页时需确保返回值为404。...属性请求 412——一个或多个请求字段在当前请求错误 413——请求的资源大于服务器允许的大小 414——请求的资源URL长于服务器允许的长度 415——请求资源不支持请求项目格式 416——请求包含...Range请求字段,在当前请求资源范围内没有range指示值,请求 也不包含If-Range请求字段 417——服务器不满足请求Expect字段指定的期望值,如果是代理服务器,可能是下 一级服务器不能满足请求...服务器返回此响应时,不会返回网页内容。   如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP )。...411(需要有效长度)服务器不接受不含有效内容长度字段的请求。   412(未满足前提条件)服务器未满足请求者在请求设置的其中一个前提条件。

3K30

详解共享库的动态加载

总之,ELF文件包含: ELF Header 文件数据,可能包含: 程序header表(段列表) 段表(列表章节标题) 以上两个标题指向的数据 ELF指定程序表中段的大小和数量,以及节表中段的大小和数量...它有9个程序(意味着有9个segment)和30个节(即section)。...我们的依赖项的每个共享库都按顺序在以下位置进行搜索: 可执行文件rpath列出的目录; LD_LIBRARY_PATH环境变量目录,该变量包含以冒号分隔的目录列表(例如:/path/to/libdir.../main 可执行文件可以运行,但是已将其添加.到rpath当前的工作目录。...找出使用来搜索依赖项的位置LD_DEBUG=libs ldd ; 如果您需要在搜索添加目录: 临时:将目录添加到LD_LIBRARY_PATH环境变量 嵌入文件:将目录添加到可执行文件或共享库的目录

3K20

linux动态库和静态库

、ar生成静态库,查看库包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-fPIC,-shared;静态库链接时搜索过程;动态库链接时,加载时搜索的过程;动态库找不到的问题...如: export LD_LIBRARY_PATH=’pwd’ 将当前文件目录添加为共享目录。...,U类表示函数是被调用的,在其它库定义的,W类是当前定义,被其它库的函数覆盖)。...表示要连接的库在当前目录 -ltest:指定链接库的名称为test,编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称 -Wl,-rpath...二、静态库链接时搜索路径的顺序: 1. ld会去找gcc/g++命令的参数-L; 2.

12.3K20

【GDB调试技巧】提高gdb的调试效率

要调试C/C++的程序,首先在编译时,必须要把调试信息加到可执行文件。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。...也就是你的可执行文件,一般在当前目录下。...program应该在PATH环境变量搜索得到。 GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb的help查看。...当前程序执行到tree3_01.c 文件第 53 行代码【未执行】。 list 查看代码内容 list list 与 l 等价 如果没有指定参数,list 命令默认会显示当前执行位置的附近源代码。...3.2 方式二:f 在过程,f 命令的功能是帮助了解当前执行的代码所在的位置,特别是在调试过程中出现错误时,可以帮助确认错误发生的地点。

12510

g++,CMake和Makefile了解一下

实际上如果你不掌握g++根本就不会写Makefile,因为它实际上就是对g++代码的整理,有了Makefile,执行程序会更加快速方便。...将预处理后的文件转换成汇编语言,生成.s文件 3.将汇编变为目标代码(机器代码),生成.o的文件 4.连接目标代码,生成可执行程序 对于这个流程,我们结合上面的例子,再详细介绍下,如下: 1.预处理阶段 首先在终端输入下面代码...变量的定义: Makefile定义的变量,一般是字符串 4. 文件指示: Makefile引用其他Makefile;指定Makefile中有效部分;定义一个多行命令 5....另外请注意Makefile文件在执行时不会执行clean这个命令,需要我们调用才会执行,即make clean。clean代码如下: ?...(注意cmake和.之间有空格),表明Cmakelist.txt文件在当前目录下。 ? 接下来在命令行输入make ? 这样我们就编译成功了,我们看下编译后的文件目录 ?

1.5K20

内核级python:调试Python编译器源码

我们看看解释器在运行脚本前进行相关配置的代码,相关代码在python目录下的initconfig.h和initconfig.c。...2,int isolatd, 设置隔离模式,应该对应python虚拟执行环境,在该环境里进行pip安装或是环境变量配置不会对全局环境产生影响。...3,int utf8_mode , 设置utf-8模式 在initconfig.c搜索PyConfig,这个结构体用于运行时配置,例如设置解释器在执行脚本时是出于调试模式还是优化模式,它还记录了一些涉及到运行时的环境变量配置...接下来我们在解释器源码设置断点对其执行进行调试体验,操作如下图所示: 首先在python模块右键,选中属性,点击调试,在命令参数输入python -v -c “print(‘hello world...接下来在main.c的pymain_run_command函数设置断点,这个函数会调用一系列函数执行源码,该文件在Module目录下, 里面的PyRunSimpleStringFlags函数作用就是执行源码

84110

Linux基础——Linux开发工具(上)_vim

而我们主要介绍的是以下几个: yum, vim, gcc / g++, gdb, make / makefile, git 首先让我们来初步了解一下本篇的内容: 1....Linux 软件包管理器 - yum 1.1 什么是软件包 首先在开始时,了解一下软件包是什么。 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序....yum的功能就是搜索并下载需要的软件包 注意:一个服务器不能在同一时刻同时安装多个软件,而且使用yum必须联网!...当然,我们也可以用指令来切换当前文件: 指令:ctrl + ww 2.7 vim的简单配置 配置文件的位置 在目录/etc/下面,有个名为.vimrc的文件,这是系统公共的配置文件。...vim在启动时会自动扫描当前用户家目录下的.vimrc文件!

8510

Windows:安装cygwin教程

这一步选择Cygwin的安装目录,以及一些参数的设置。...默认的安装位置是**C:\cygwin*,你也可以选择自己的安装目录,然后选择“下一步”, 这一步我们可以选择安装过程从网上下载的Cygwin组件包的保存位置,选择完以后,点击“下一步”,...在这一步,需要注意,为了获得最快的下载速度,我们首先在列表寻找Cygwin中国镜像的地址:http://www.cygwin.cn,如果找到就选中这个地址;如果找不到这个地址,就选一个国内的镜像地址,...或者使用阿里云镜像*选择完成后,点击“下一步”, 这一步,我们选择需要下载安装的组件包,为了使我们安装的Cygwin能够编译程序,我们需要安装gcc编译器,默认情况下,gcc并不会被安装,我们需要选中它来安装...你还会看到*/cygdrive/c*自动被添加到当前目录显示里面了。

2.6K20

Linux编译相关命令

(2)-I DirPath 指定文件查找目录 -include file -i file 指定包含的文件 g++ hello.cpp -include...-lmyhello -L.表示静态库位于当前目录下,myhello自动加上lib组成静态库名称libmyhello.a (4)得到动态库myhello.so  g++...-fPIC -shared hello.cpp -o libmyhello.so (5)使用动态库 动态库的时候和静态库使用一样,唯一值得注意的是当目录同时存在相同名称的动态库和静态库时...这一个库在不同进程的虚拟地址不同,但操作系统显然会把它们映射到同一块物理内存上。...,可以通过修改配置文件/etc/ld.so.conf中指定的动态库搜索路径,然后执行ldconfig命令来改变 (4)编译链接添加-WL,-rpath命令选项,将运行时动态库的搜索路径记录在可执行程序

3.3K00

Ubuntu 系统配置 VS Code C++ 开发环境

查看 g++ 版本: # g++ --version g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software...编译 tasks.json 为当前工作目录配置编译环境,我们需要创建一个tasks.json文件来告诉VS Code如何来编译源文件,选择 Terminal --> Configure Tasks,然后点击...C/C++: g++ build active file,会自动生成一个tasks.json,根据自己的需求来修改,tasks.json是为整个目录配置环境,不需要修改诸如 “${fileDirname...}/${fileBasenameNoExtension}", “stopAtEntry”默认为false, 运行调试时,debugger不会在源文件添加断点,设置为true时,调试会在main函数入口处等待...c_cpp_properties.json 想要进行更多的配置,例如设置编译器路径、改变C标准等,可以创建一个c_cpp_properties.json文件,使用 ctrl+shift+P 打开命令搜索

60910
领券