CMakeLists.txt 编辑语法学习

2023-05-16

已hello.cpp为源文件,构建一个CMakeLists.txt

?
1
2
3
cmake_minimum_required(VERSION 2.8)
project(hello)
add_executable(hello hello.cpp)

在目录中的build 文件夹中进行cmake ..和make ,就可以编译源文件生成可运行文件.

cmake的常用命令:

    

project 命令

    语句 : project(<projectname> [languageName1 languageName2 … ] )

    作用 : 指定项目名

cmake_minimum_required 命令

    语句 : cmake_minimum_required(VERSION major[.minor[.patch[.tweak]]] [FATAL_ERROR])

    作用 : 指定cmake需要的最小版本

    

aux_source_directory 命令

    语句 : aux_source_directory(<dir> <variable>)

    作用 : 获取指定目录下的所有文件,保存到variable中,包括 .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx文件

    示例 : aux_source_directory(. var)#获取当前目录中源文件

add_executable 命令

    语句 : add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)

    作用 : 将指定文件source编译成可执行文件,命名位name

    示例 : add_executable(hello hello.cpp)

add_library 命令

    语句 : add_library([STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)

    作用 : 添加一个名为<name>的库文件,指定STATIC,SHARED,或者MODULE参数用来指定要创建的库的类型。STATIC库是目标文件的归档文件,在链接其它目标的时候使用。SHARED库会被动态链接,在运行时被加载。MODULE库是不会被链接到其它目标中的插件,但是可能会在运行时使用dlopen-系列的函数动态链接。如果没有类型被显式指定,这个选项将会根据变量BUILD_SHARED_LIBS的当前值是否为真决定是STATIC还是SHARED

    示例 : add_library(Lib ${DIR_SRCS})

add_dependencies 命令

    语句 : add_dependencies(target-name depend-target1 depend-target2 …)

    作用 : 用于指定某个目标(可执行文件或者库文件)依赖于其他的目标。这里的目标必须是 add_executable、add_library、add_custom_target 命令创建的目标

add_subdirectory 命令

    语句 : add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

    作用 : 用于添加一个需要进行构建的子目录

    示例 : add_subdirectory(directory)

target_link_libraries 命令

    语句 : target_link_libraries(<target> [item1 [item2 […]]] [[debug|optimized|general] ] …)

    作用 : 用于指定 target 需要链接 item1 item2 …。这里 target 必须已经被创建,链接的 item 可以是已经存在的 target(依赖关系会自动添加)

    示例 : target_link_libraries(Main Lib)

set 命令

    语句 : set(<variable> <value> [[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE])

    作用 : 用于设定变量 variable 的值为 value。variable可以自己定义

    示例 : set(var "${list}_exe")

unset 命令

    语句 : unset(<variable> [CACHE])

    作用 : 用于移除变量 variable。如果指定了 CACHE 变量将被从 Cache 中移除。

    示例 : unset(VAR CACHE)

message 命令

    语句 : message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] “message to display” …)

    作用 : 输出信息

    示例 : message("hello world")

include_directories 命令

    语句 : include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 …)

    作用 : 用于设定目录,这些设定的目录将被编译器用来查找 include 文件

    示例 : include_directories(${PROJECT_SOURCE_DIR}/lib)

find_path 命令

    语句 : find_path(<VAR> name1 [path1 path2 …])

    作用 : 用于查找包含文件 name1 的路径,如果找到则将路径保存在 VAR 中(此路径为一个绝对路径),如果没有找到则结果为 <VAR>-NOTFOUND。默认的情况下,VAR 会被保存在 Cache 中,这时候我们需要清除 VAR 才可以进行下一次查询(使用 unset 命令)

add_definitions 命令

    语句 : find_library(<VAR> name1 [path1 path2 …])

    作用 : 用于添加编译器命令行标志(选项),通常的情况下我们使用其来添加预处理器定义

    示例 : add_definitions(-D_UNICODE -DUNICODE)

execute_process 命令

    语句 : execute_process(COMMAND <cmd1> [args1...]]  [COMMAND <cmd2> [args2...] [...]] 

                                            [WORKING_DIRECTORY <directory>]

                                            [TIMEOUT <seconds>]

                                            [RESULT_VARIABLE <variable>]  

                                            [OUTPUT_VARIABLE <variable>]  

                                            [ERROR_VARIABLE <variable>]  

                                            [INPUT_FILE <file>]

                                            [OUTPUT_FILE <file>] 

                                            [ERROR_FILE <file>]  

                                            [OUTPUT_QUIET]  

                                            [ERROR_QUIET]  

                                            [OUTPUT_STRIP_TRAILING_WHITESPACE]

                                            [ERROR_STRIP_TRAILING_WHITESPACE])

    作用 : 用于执行一个或者多个外部命令。每一个命令的标准输出通过管道转为下一个命令的标准输入。WORKING_DIRECTORY 用于指定外部命令的工作目录,RESULT_VARIABLE 用于指定一个变量保存外部命令执行的结果,这个结果可能是最后一个执行的外部命令的退出码或者是一个描述错误条件的字符串,OUTPUT_VARIABLE 或者 ERROR_VARIABLE 用于指定一个变量保存标准输出或者标准错误,OUTPUT_QUIET 或者 ERROR_QUIET 用于忽略标准输出和标准错误。

    示例 : execute_process(COMMAND ls)

file 命令

    语句 : file(WRITE filename "message to write"... ) 

    作用 : WRITE选项将会写一条消息到名为filename的文件中。如果文件已经存在,该命令会覆盖已有的文件;如果文件不存在,它将创建该文件。

    ===========================================================

    语句 : file(APPEND filename "message to write"... )

    作用 : APPEND选项和WRITE选项一样,将会写一条消息到名为filename的文件中,只是该消息会附加到文件末尾。 

    ===========================================================

    语句 : file(READ filename variable [LIMIT numBytes] [OFFSET offset] [HEX]) 

    作用 : READ选项将会读一个文件中的内容并将其存储在变量里。读文件的位置从offset开始,最多读numBytes个字节。如果指定了HEX参数,二进制代码将会转换为十六进制表达方式,并存储在变量里。 

    

    ===========================================================

    语句 : file(STRINGS filename variable [LIMIT_COUNT num] [LIMIT_INPUT numBytes]  [LIMIT_OUTPUT numBytes] 

                                                           [LENGTH_MINIMUM numBytes]   [LENGTH_MAXIMUM numBytes]

                                                            [NEWLINE_CONSUME] [REGEX regex]  [NO_HEX_CONVERSION]) 

    作用 : STRINGS将会从一个文件中将一个ASCII字符串的list解析出来,然后存储在variable变量中。文件中的二进制数据会被忽略。回车换行符会被忽略。它也可以用在Intel的Hex和Motorola的S-记录文件;读取它们时,它们会被自动转换为二进制格式。可以使用NO_HEX_CONVERSION选项禁止这项功能。LIMIT_COUNT选项设定了返回的字符串的最大数量。LIMIT_INPUT设置了从输入文件中读取的最大字节数。LIMIT_OUTPUT设置了在输出变量中存储的最大字节数。LENGTH_MINIMUM设置了要返回的字符串的最小长度;小于该长度的字符串会被忽略。LENGTH_MAXIMUM设置了返回字符串的最大长度;更长的字符串会被分割成不长于最大长度的字符串。NEWLINE_CONSUME选项允许新行被包含到字符串中,而不是终止它们。REGEX选项指定了一个待返回的字符串必须满足的正则表达式。 

    ===========================================================

    语句 : file(GLOB variable [RELATIVE path] [globbing expressions]...) 

    作用 : GLOB选项将会为所有匹配查询表达式的文件生成一个文件list,并将该list存储进变量variable里。文件名查询表达式与正则表达式类似,只不过更加简单。如果为一个表达式指定了RELATIVE标志,返回的结果将会是相对于给定路径的相对路径。 

    ===========================================================

     语句 : file(GLOB_RECURSE variable [RELATIVE path] [FOLLOW_SYMLINKS] [globbing expressions]...) 

    作用 : GLOB_RECURSE选项将会生成一个类似于通常的GLOB选项的list,只是它会寻访所有那些匹配目录的子路径并同时匹配查询表达式的文件。作为符号链接的子路径只有在给定FOLLOW_SYMLINKS选项或者cmake策略CMP0009被设置为NEW时,才会被寻访到。参见cmake --help-policy CMP0009 查询跟多有用的信息。 

    ===========================================================

    语句 : file(RENAME <oldname> <newname>) 

    作用 : RENAME选项对同一个文件系统下的一个文件或目录重命名。

    ===========================================================

    语句 : file(REMOVE [file1 ...]) 

    作用 : REMOVE选项将会删除指定的文件,包括在子路径下的文件。

    ===========================================================

    语句 : file(REMOVE_RECURSE [file1 ...]) 

    作用 : REMOVE_RECURSE选项会删除给定的文件以及目录,包括非空目录。 

    ===========================================================

    语句 : file(MAKE_DIRECTORY [directory1 directory2 ...]) 

    作用 : MAKE_DIRECTORY选项将会创建指定的目录,如果它们的父目录不存在时,同样也会创建。(类似于mkdir命令——译注) 

    ===========================================================

    语句 : file(RELATIVE_PATH variable directory file) 

    作用 : RELATIVE_PATH选项会确定从direcroty参数到指定文件的相对路径。 

    ===========================================================

    语句 : file(TO_CMAKE_PATH path result) 

    作用 : TO_CMAKE_PATH选项会把path转换为一个以unix的 / 开头的cmake风格的路径。输入可以是一个单一的路径,也可以是一个系统路径,比如"$ENV{PATH}"。注意,在调用TO_CMAKE_PATH的ENV周围的双引号只能有一个参数(Note the double quotes around the ENV call TO_CMAKE_PATH only takes one argument. 原文如此。 

    ===========================================================

    语句 : file(TO_NATIVE_PATH path result) 

    作用 : TO_NATIVE_PATH选项与TO_CMAKE_PATH选项很相似,但是它会把cmake风格的路径转换为本地路径风格:windows下用\,而unix下用/。 

    ===========================================================

    语句 : file(DOWNLOAD url file [TIMEOUT timeout] [STATUS status] [LOG log] [EXPECTED_MD5 sum] [SHOW_PROGRESS]) 

    作用 : DOWNLOAD 将给定的URL下载到指定的文件中。如果指定了LOG var选项,下载日志将会被输出到var中。如果指定了STATUS var选项,下载操作的状态会被输出到var中。该状态返回值是一个长度为2的list。list的第一个元素是操作的数字返回值,第二个返回值是错误的字符串值。错误信息如果是数字0,操作中没有发生错误。如果指定了TIMEOUT time选项,在time秒之后,操作会超时退出;time应该是整数。如果指定了EXPECTED_MD5 sum选项,下载操作会认证下载的文件的实际MD5和是否与期望值匹配。如果不匹配,操作将返回一个错误。如果指定了SHOW_PROGRESS选项,进度信息会以状态信息的形式被打印出来,直到操作完成。

cmake 常用语句

    

条件控制

======================  

      if(expression)

        # ...

        elseif(expression2)

            # ...

        else()

            # ...

        endif()

======================

    对于 if(string) 来说:

  1. 如果 string 为(不区分大小写)1、ON、YES、TRUE、Y、非 0 的数则表示真

  2. 如果 string 为(不区分大小写)0、OFF、NO、FALSE、N、IGNORE、空字符串、以 -NOTFOUND 结尾的字符串则表示假

  3. 如果 string 不符合上面两种情况,则 string 被认为是一个变量的名字。变量的值为第二条所述的各值则表示假,否则表示真

===========================================================

    if中的语句:

  1. if(NOT expression)
    为真的前提是 expression 为假

  2. if(expr1 AND expr2)
    为真的前提是 expr1 和 expr2 都为真

  3. if(expr1 OR expr2)
    为真的前提是 expr1 或者 expr2 为真

  4. if(COMMAND command-name)
    为真的前提是存在 command-name 命令、宏或函数且能够被调用

  5. if(EXISTS name)
    为真的前提是存在 name 的文件或者目录(应该使用绝对路径)

  6. if(file1 IS_NEWER_THAN file2)
    为真的前提是 file1 比 file2 新或者 file1、file2 中有一个文件不存在(应该使用绝对路径)

  7. if(IS_DIRECTORY directory-name)
    为真的前提是 directory-name 表示的是一个目录(应该使用绝对路径)

  8. if(variable|string MATCHES regex)
    为真的前提是变量值或者字符串匹配 regex 正则表达式

  9. if(variable|string LESS variable|string)
    if(variable|string GREATER variable|string)
    if(variable|string EQUAL variable|string)
    为真的前提是变量值或者字符串为有效的数字且满足小于(大于、等于)的条件

  10. if(variable|string STRLESS variable|string)
    if(variable|string STRGREATER variable|string)
    if(variable|string STREQUAL variable|string)
    为真的前提是变量值或者字符串以字典序满足小于(大于、等于)的条件

  11. if(DEFINED variable)
    为真的前提是 variable 表示的变量被定义了

循环结构

    foreach循环

======================

        set(VAR a b c)

        foreach(f ${VAR})

            message(${f})

        endforeach()

====================== 

    

    while循环

======================

        set(VAR 5)

        while(${VAR} GREATER 0)

            message(${VAR})

            math(EXPR VAR "${VAR} - 1")

        endwhile()

======================

宏定义

    macro循环

======================

        # 定义一个宏 hello

        macro(hello MESSAGE)

            message(${MESSAGE})

        endmacro()

        # 调用宏 hello

        hello("hello world")

        # 定义一个函数 hello

        function(hello MESSAGE)

            message(${MESSAGE})

        endfunction()

======================

函数定义

    

======================

        function(get_func RESULT)

            # RESULT 的值为实参的值,因此需要使用 ${RESULT}

            # 这里使用 PARENT_SCOPE 是因为函数会构建一个局部作用域

            set(${RESULT} "Hello Function" PARENT_SCOPE)

        endfunction()

         

        macro(get_macro RESULT)

            set(${RESULT} "Hello Macro")

        endmacro()

         

        get_func(V1)

        # 输出 Hello Function

        message(${V1})

         

        get_macro(V2)

        # 输出 Hello Macro

        message(${V2})

======================

字符串控制

    string(REGEX MATCH (regular_expression) (output variable) (input) [(input)...])
    string(REGEX MATCHALL (regular_expression) (output variable) (input) [(input)...])
    string(REGEX REPLACE (regular_expression) (replace_expression) (output variable) (input) [(input)...])
    string(REPLACE (match_string) (replace_string) (output variable) (input) [(input)...])
    string(COMPARE EQUAL (string1) (string2) (output variable))
    string(COMPARE NOTEQUAL (string1) (string2) (output variable))
    string(COMPARE LESS (string1) (string2) (output variable))
    string(COMPARE GREATER (string1) (string2) (output variable))
    string(ASCII (number) [(number) ...] (output variable))
    string(CONFIGURE (string1) (output variable) [@ONLY] [ESCAPE_QUOTES])
    string(TOUPPER (string1) (output variable))
    string(TOLOWER (string1) (output variable))
    string(LENGTH (string) (output variable))
    string(SUBSTRING (string) (begin) (length) (output variable))
    string(STRIP (string) (output variable))
    string(RANDOM [LENGTH (length)] [ALPHABET (alphabet)] (output variable))

cmake 常用变量

  1. UNIX 如果为真,表示为 UNIX-like 的系统,包括 Apple OS X 和 CygWin

  2. WIN32 如果为真,表示为 Windows 系统,包括 CygWin

  3. APPLE 如果为真,表示为 Apple 系统

  4. CMAKE_SIZEOF_VOID_P 表示 void* 的大小(例如为 4 或者 8),可以使用其来判断当前构建为 32 位还是 64 位

  5. CMAKE_CURRENT_LIST_DIR 表示正在处理的 CMakeLists.txt 文件的所在的目录的绝对路径(2.8.3 以及以后版本才支持)

  6. CMAKE_ARCHIVE_OUTPUT_DIRECTORY 用于设置 ARCHIVE 目标的输出路径

  7. CMAKE_LIBRARY_OUTPUT_DIRECTORY 用于设置 LIBRARY 目标的输出路径

  8. CMAKE_RUNTIME_OUTPUT_DIRECTORY 用于设置 RUNTIME 目标的输出路径

可能会用到的一些命令

        get_property 获取一个属性值

get_property(<variable>
               <GLOBAL             |
                DIRECTORY [dir]    |
                TARGET    <target> |
                SOURCE    <source> |
                TEST      <test>   |
                CACHE     <entry>  |
                VARIABLE>
               PROPERTY <name>
               [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])

        get_source_file_property  为一个源文件获取一种属性值

get_source_file_property(VAR file property)

        get_target_property 从一个目标中获取一个属性值

get_target_property(VAR target property)

        get_test_property 获取一个测试的属性

get_test_property(test VAR property)

        get_cmake_property  获取一个CMake实例的属性

get_cmake_property(VAR property)

        get_filename_component 得到一个完整文件名中的特定部分

get_filename_component(<VAR> FileName
                         PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH
                         [CACHE])

      

      get_cmake_property  获取一个CMake实例的属性。

get_directory_property(<variable> [DIRECTORY <dir>] <prop-name>)

set(CMAKE_CXX_FLAGS "-fsanitize=address -g")命令,检测内存问题方便报错 

CMAKE_CXX_FLAGS设置


    # set compiler
    # -O2 or -O3 优化
    # -fPIC 产生与位置无关代码
    # -g 调试信息
    # -Wall 开启所有的编译警告
    # -ffast-math -ffast-math -use_fast_math 浮点数计算加速
    # -fdiagnostics-color 颜色设置
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -fPIC -std=c++14 -g -Wall -ffast-math -ffast-math -use_fast_math -fdiagnostics-color=auto")

    -w

禁止编译警告的打印。这个警告不建议使用。大约2012年底,公司代码进行一次大重构,另外从Codeblock集成开发环境转向Makefile管理,Makefile里面默认使用了-w,因而代码一直没有警告,今年个别项目开发中发现一些代码笔误导致的BUG,而这些问题可以从编译警告中知道。前几个月,领导安排我来fix这些警告。为了自己,为了后人,不建议使用-w选项。

    -Werror

将所有的警告当成错误处理。此选项谨慎建议加上。有的开源库警告很多(大名鼎鼎的ffmpeg也有很多警告呢),一一改掉耗时耗人力,必要性也不大。最后,公司代码加入了一个开源库,里面有很多代码警告,可能领导又安排我来fix了。

    -Wfatal-errors

遇到第一个错误就停止,减少查找错误时间。建议加上。很多人遇到错误,没有意识到从第一个开始排查。不管是编译错误,还是程序运行出错,从最开始的错误查起,是个好的做法。

-Wall开启“所有”的警告。强烈建议加上,并推荐该选项成为共识。如case语句没有default处理,有符号、无符号处理,未使用变量(特别是函数有大量未使用的数组,占用栈空间,测试发现,开辟一个未使用的8MB的数组,程序有coredump),用%d来打印地址,或%s打印int值等,都可以发出警告。

    -Wextra

除-Wall外其它的警告。建议加上。

在GCC编译时,加上必要的警告选项,可以避免很多低级错误引发的问题,我就在实际工程代码中遇到用“==”来赋值,我自己写的代码也出现过把“=”当成判断的。但是,有些错误却不是用GCC选项能解决的。比如一般项目都会自定义调试信息打印函数,但在处理可变参数类型时,往往不注意。
 

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

CMakeLists.txt 编辑语法学习 的相关文章

  • CMake Error: The current CMakeCache.txt directory is different...

    零 问题描述 开始学ROS时 xff0c 需要编译别人的功能包 xff0c 常常把别人的工作空间拿过来使用 xff0c 但编译时会出现各种错误 xff0c 如下的目录问题 xff1a CMake Error The current CMak
  • Could not find a package configuration file provided by “slam_karto” with any of the following names

    零 问题描述 使用ROS时 xff0c 需要编译别人的功能包 xff0c 但编译时会出现各种错误 xff0c 如下的缺少功能包的问题 xff1a CMake Error at opt ros kinetic share catkin cma
  • AS5047开发简介

    本文有麦粒电子撰写 xff0c 并提供相应产品服务 AS5047是ams公司研发的14bit精度的磁传感器 xff0c 只需要一个磁铁悬于芯片上方就可以检测出相应的角度信息 针对不同的应用场景 xff0c 该芯片还配置了不同的输出接口 xf
  • 舵机PWM转模拟电压(带正反控制)

    舵机PWM转模拟电压 xff08 带正反控制 xff09 本文由 麦粒电子 撰写 xff0c 并提供相应产品服务 叙述 上文讲到讲遥控器接收机信号转换成模拟电压 xff0c 用于驱动直流无刷电机的案例 其中的信号转换器4路转换信号可用于DI
  • mbedtls加密组件使用示例

    目录 1 mbedtls aes组件的使用1 1 AES ECB加解密接口使用1 2 AEC CBC加解密接口使用1 3 AES 使用CFB加解密接口使用1 4 AES 使用OFB加解密接口使用1 4 AES 使用CTR加解密接口使用1 2
  • 2021-10-07

    舵机PWM信号转继电器开关信号 本文由 麦粒电子 撰写 xff0c 并提供相应产品服务 叙述 航模玩家经常需要DIY改装 譬如飞行器做一个投弹的开关 xff0c 船用模型做一个投食机关 再或者弄一些彩灯控制 往往这些功能只需要有一个简单的开
  • 舵机PWM信号转互斥继电器开关信号

    本文由 麦粒电子 撰写 xff0c 并提供相应产品服务 叙述 上次的PWM转继电器开关方案得到大家的不少好评 xff08 博客链接 xff09 xff0c 但是发现有些玩家需要一路PWM同时去控制两路继电器开关通断 xff0c 并且两者是互
  • AMS5601开发 AB角度磁编码器

    AMS5601的ardunio和STM32驱动开发 本文有麦粒电子撰写 xff0c 并提供相应硬件产品服务 前言 目前ams关于磁编码芯片用的比较多的可能是ams5600 xff0c 能够输出pwm信号 xff0c 电压信号以及I2C通信数
  • Spring Security 登录密码验证过程(UsernamePasswordAuthenticationFilter)

    Spring Security主要是一个由一堆Filter组成的过滤器链 每个Filter做自己的事情 今天我跟一下登录的密码认证过程 主要是UsernamePasswordAuthenticationFilter这个类 1 web xml
  • ROS-虚拟CAN通讯/实质CAN通信

    xff11 xff0e 源码安装canopen 从官网下载canopen至Ubuntu xff0c 下载地址 xff1a https github com ros industrial ros canopen tree kinetic de
  • 无人机集群任务规划方法研究综述&论文解读

    无人机集群任务规划方法研究综述 amp 论文解读 参考文献引言 任务规划理论模型 xff1a 分布式任务规划理论分布式智能规划方法的出现 xff1a 无人机集群应用的核心技术集中式 xff1a 分布式集散式 基于逻辑与规则的多无人机任务规划
  • 【无人机设计与开发】推荐几个无人机网址

    本文 也是转载于 北航可靠飞行组的课件 北航官网 xff1a http rfly buaa edu cn index html 官方名网址推荐理由51IMXhttp www 5imx com portal php遥控模型分享ArduPilo
  • 【PX4 飞控剖析】06 树莓派加载安装ROS,Mavros以及PX4固件

    PX4 飞控剖析 06 树莓派加载安装Mavros以及PX4固件 1 树莓派 刷镜像1 1 用Win32DiskImager刷入ubuntu mate 16 04 2 desktop armhf raspberry pi的镜像 1 2 开机
  • 【激光SLAM】 01 cartographer环境建立以及建图测试(详细级)

    激光SLAM cartographer环境建立以及建图测试 xff08 详细级 xff09 cartographerLaunch the 2D backpack demo Download the 3D backpack example b
  • gerrit api使用curl方式

    curl digest u username password X GET 39 http gerriturl a projects 项目名称 config 39 password是gerrit上settings中的密码 项目名称中包含 记
  • lwip 基于select方式实现的tcp简易客户端

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • Kalibr相机矫正 ImportError: cannot import name PlotCollection

    Kalibr相机矫正 ImportError cannot import name PlotCollection 问题描述解决方法 其实非常简单的一个问题 xff0c 在网上找了一天都没找到解决方法 xff0c 一次偶然的操作 xff0c
  • esp32c3 nuttx 移植 micropython 尝试

    源码来自 https github com apache incubator nuttx apps pull 840 和 https github com apache incubator nuttx apps tree 787ac9060
  • 曼孚技术分享丨浅析自动驾驶车辆检测技术

    提到自动驾驶 xff0c 有人不禁会好奇 xff0c 自动驾驶系统如何感知周围环境并做出 人类 的决定 自动驾驶技术的主要模块共三大类 xff0c 即感知 规划和控制 它们之间相互协作 xff0c 共同为车辆的安全性与舒适性保驾护航 简单来
  • ros2话题的发布者和订阅者——ubuntu20.04+自定义话题接口类型

    文章目录 话题的发布者话题的订阅者自定义话题的接口类型将自定义的话题引入到程序中 话题的发布者 导入消息类型 xff0c ros自带的消息类型在std msgs msg 下面 xff0c 有string等类型定义一个类 xff0c 里面声明

随机推荐

  • 红外遥控器与红外接收器调试问题分析

    红外误码问题分析 目前开发的产品是带Qt界面的 xff0c 所以作为一款可视化控制产品 xff0c 遥控器是必不可少的 xff0c 前段时间正好调试了遥控器与红外接收模块 xff0c 现总结下遇到的红外误码问题分析解决过程 分析思路分为两个
  • Ubuntu18.04下安装Cuda8及以上版本

    Ubuntu18 04下安装Cuda8及以上版本 cuda8已经不支持GCC5及以上版本的安装 xff0c 而ubuntu18自带的gcc版本为7 5 xff0c 所以安装时会报错Error unsupported compiler 7 5
  • ubuntu安装cmake的三种方法(超方便!)

    Ubuntu安装cmake的三种方法 xff08 超方便 xff01 xff09 第一种方法 xff08 不推荐 xff09 直接使用apt安装 xff0c 但是安装的版本很老 xff0c 不推荐这种方法 span class token
  • ubuntu中eigen库的安装(所有历史版本均可安装)

    ubuntu中eigen库的安装 所有历史版本均可安装 xff09 目前官网以及一些文章给出的wget网址出现错误 xff0c 下载不了 The requested repository either does not exist or y
  • Ubuntu安装opencv及问题解决(所有版本通用)

    Ubuntu安装opencv及问题解决 xff08 所有版本通用 xff09 安装编译 获取源码 span class token function git span clone https github com opencv opencv
  • 华为云端服务器使用ModelArts跑MindSpore框架Yolov5

    华为云端服务器使用Modlearts跑MindSpore框架Yolov5 环境准备 云平台登录 xff0c 用于购买服务器https uconsole xckpjs com 我这里用的是昇腾Ascend 910点击ModelArts打开控制
  • git 环境搭建以及常用指令笔记

    目录 1 Git 环境搭建1 1 Git 配置正常显示中文文件名 2 Git 常用指令2 1 Git 生成差异文件补丁包2 2 Git 移除未纳入跟踪的文件2 3 Git 选择性合并分支 1 Git 环境搭建 1 1 Git 配置正常显示中
  • ROS命令 catkin_init_workspace 分析

    ros版本 xff1a Ubuntu18 04 Melodic 之前在调试ros工作空间环境变量的问题的时候修改了工作空间src文件夹下的CMakeLists txt以进行打印消息分析出错的原因 在我新建另外一个工作空间 xff0c 执行c
  • BundleFusion复现手册——Win10+VS2013+Cuda8.0+KinectV2实时重建

    文章目录 一 摘要二 操作环境三 工程环境配置3 1 装VS2013和CUDA8 03 2 DirectX SDK 安装3 3 Kinect SDK 2 0 四 VS2013代码生成 xff08 以离线数据为例 xff09 4 1 依赖配置
  • C++基础入门

    C 43 43 基础入门 C 43 43 初识HelloWord变量 常量和关键字 数据类型整型实型 xff08 浮点型 xff09 字符串 C 43 43 初识 HelloWord 打开Visual Studio xff0c 创建新项目
  • 二(两)视图多视图点云配准

    二视图多视图点云配准综述 多视图视图点云配准多视图点云粗配准基于生成树的粗配准基于形状生成的多视图粗配准算法 多视图点云精配准 点云配准 xff08 Point Cloud Registration xff09 是将两个或多个点云数据集对齐
  • 点云传统滤波算法

    点云滤波 分割功能滤波直通滤波条件滤波提取索引滤波 下采样类滤波体素滤波均匀采样滤波 去除噪声点类滤波统计滤波半径滤波高斯滤波双边滤波随机采样一致滤波投影滤波 本文介绍了各种滤波算法的原理以及给出了相关实现方法 分割功能滤波 分割功能滤波是
  • K-d树和八叉树

    K d树 xff1a 解决KNN近邻问题查找效率 对于一个k维的超平面 xff0c 在KD树每一层的构建中都选择一个维度来进行划分 xff0c 将k维的数据空间分为两部分 xff0c 并使其尽量平衡 然后如此递归下去 也就是说假如我们要储存
  • C++突击面试

    目录 1 编译内存相关 1 1 C 43 43 程序编译过程 1 2 C 43 43 内存管理 1 3 栈和堆的区别 1 4 变量的区别 1 5 全局变量定义在头文件中有什么问题 xff1f 1 6 内存对齐 1 7 什么是内存泄露 1 8
  • 自动驾驶 规划综述

    Motion Planning What is motion planning 规划的本质是 xff1a 搜索问题 好 的规划就是一个目标函数 xff1a 求最优解 Motion Planning的三个领域 Robotic Fields 生
  • 数值最优化

    书 xff1a Numerical Optimization 文档 xff1a 安全验证 知乎 知乎 xff0c 中文互联网高质量的问答社区和创作者聚集的原创内容平台 xff0c 于 2011 年 1 月正式上线 xff0c 以 让人们更好
  • Qlist的用法

    QList是一种表示链表的模板类 QList是Qt的一种泛型容器类 它以链表方式存储一组值 xff0c 并能对这组数据进行快速索引 xff0c 还提供了快速插入和删除等操作 QList QLinkedList和QVector提供的操作极其相
  • QT QTableView 获取某行的所有信息

    1 信号槽 显示信息 connect ui gt tableView SIGNAL clicked QModelIndex this SLOT show list 2 获取当前行的行号 int row 61 ui gt tableView
  • ubuntu 开发环境配置记录

    目录 1 VIM及zsh配置记录2 Ubuntu 配置FTP服务器3 Ubuntu 配置SSH服务器4 Ubuntu 更换软件源 1 VIM及zsh配置记录 xvim tools rar 是别人已经搭建好的环境 xff0c 下文仅为对其配置
  • CMakeLists.txt 编辑语法学习

    已hello cpp为源文件 构建一个CMakeLists txt 1 2 3 cmake minimum required VERSION 2 8 project hello add executable hello hello cpp