CMakeList学习笔记

2023-05-16

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

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) 来说:

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

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

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

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

if中的语句:

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

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

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

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

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

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

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

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

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

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

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 常用变量

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

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

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

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

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

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

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

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

可能会用到的一些命令

    get_property 获取一个属性值

get_property(
<GLOBAL |
DIRECTORY [dir] |
TARGET |
SOURCE |
TEST |
CACHE |
VARIABLE>
PROPERTY
[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( FileName
PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH
[CACHE])

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

get_directory_property( [DIRECTORY

] )

参考 : https://www.cnblogs.com/Free-Thinker/p/6168733.html

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

CMakeList学习笔记 的相关文章

  • Linux面试必备20个常用命令

    文章目录 第一章 什么是linux第二章 linux的基础命令1 pwd 命令2 ls 命令3 cd 命令4 man 命令5 grep 命令6 find 命令7 chmod 命令8 ps 命令9 kill 命令10 tail 命令11 ne
  • Python爬虫实战(一):翻页爬取数据存入SqlServer

    目录 前言爬取目标准备工作代码分析1 设置翻页2 获取代理ip3 发送请求4 获取详情页地址5 提取详情信息6 存入数据库7 循环实现翻页8 启动 前言 x1f525 x1f525 本文已收录于Python爬虫实战100例专栏 xff1a
  • 已解决error: subprocess-exited-with-error

    已解决 xff08 pip安装第三方模块lxml模块报错 xff09 Building wheels for collected packages lxml Building wheel for lxml setup py error er
  • 已解决此处缺少‘,‘, ‘]‘字符, 实际上是一个 ‘EOF‘

    已解决Python解析JSON xff0c 抛出此处缺少 39 39 39 字符 实际上是一个 39 EOF 异常的解决方法 xff0c 亲测有效 文章目录 报错问题报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群
  • 已解决E: Unable to locate package ros-kinetic-desktop-full

    已解决Ubuntu安装ros xff0c 抛出异常E Unable to locate package ros kinetic desktop full的正确解决方法 xff0c 亲测有效 xff0c 文末附上Ubuntu系统对应ros系统
  • 数组元素交叉排列的算法题(a1 a2 a3 .. an b1 b2 b3 .. bn -->a 1 b1, a2 b2, a3 b3, .. an bn ) 概论思想(perfect shuffle 算法)

    perfect shuffle 算法 今天又发现一个关于完美洗牌的算法 这个比较简单一些 xff0c 由 microsoft的Peiyush Jain提出 原论文 xff1a A Simple In Place Algorithm for
  • Linux操作系统之命令

    Linux操作系统指令有很多 xff0c 这里就先介绍一些最最基础的吧 首先就是将操作界面显示 xff1a Ctrl 43 alt 43 t 显示当前目录内容 xff1a ls ls l xff1a 将目录内容使用列表显示 ls a xff
  • [操作系统]学习操作系统的经典书籍

    http blog chinaunix net u1 43966 showart 396940 html 介绍了一些操作系统学习的经典书籍 xff0c 包括理论上的 具体操作系统的 Abraham Silberschatz的两本书 xff1
  • 原创:史上最全最通俗易懂的,索引最左前缀匹配原则(认真脸)

    索引最左前缀匹配原则 对于最左前缀匹配原则居然没有百度百科 xff0c 实在是让我感觉不可思议 最左前缀匹配原则 xff0c 用几句话来概述就是 xff1a 顾名思义 xff0c 就是最左优先 xff0c 在创建多列索引时 xff0c 要根
  • MATLAB从文件读取数据

    一 从filename文件读取数据 1 readtable函数 语法 xff1a t 61 readtable xff08 filename xff09 支持的扩展名 xff1a txt csv xls xlsm xlsx xlsm xlt
  • 前端进阶之TS总结

    知识点 高频面试题TS装饰器axios二次封装 1 高频面试题 1 1 类型推论 amp 可赋值性 什么是类型推论 xff1f TypeScript 会在没有明确的指定类型的时候推测出一个类型 xff0c 这就是类型推论如果定义的时候没有赋
  • 岁月清浅,邀你入梦

    这世间本应美好 xff0c 怎无奈痛苦缠身 xff0c 卿心亦真 xff0c 免世人之苦 xff0c 乐自身之本 卿之容 xff0c 多沉醉 xff0c 于心赞 xff0c 日夜思 淡若微风的陪伴 xff0c 奈何情深缘浅 只相识 xff0
  • 记一次解BUG的心得感受

    今天遇到 了 一个 STP的问题 xff0c 从测试 现象 来看与之前一个FR的验证过程中表现出来的特征很相似 这种相似性将我引入了一种歧途 xff1a 怀疑原来的修改有问题 假设你知道第N次修改有潜在的case无法验证 那么这种潜在的风险
  • 02_Keil5报错 error: #5: cannot open source input file “XXX.h”: No such file or directory解决方法

    Keil5 error 5 cannot open source input file led h No such file or directory 是找不到包含文件 解决办法1 包含文件可以解决 解决办法2 如果包含了还是报 5找不到文
  • 05_FreeRTOS中断管理

    目录 什么是中断 中断相关寄存器 源码实验 什么是中断 简介 让CPU打断正常运行的程序 转而去处理紧急的事件 程序 就叫中断 举例 上课可以比做CPU正常运行的程序 上厕所可以比做中断程序 中断执行机制 可简单概括为三步 中断请求 外设产
  • 07_FreeRTOS任务调度器的挂起和恢复

    任务调度器的挂起和恢复 挂起任务调度器 调用此函数不需要关闭中断 使用格式示例 1 与临界区不一样的是 挂起任务调度器 未关闭中断 2 它仅仅是防止 xff1b 任务之间的资源争夺 中断照样可以直接响应 3 挂起调度器的方式 适合于临界区位
  • 09_FreeRTOS任务调度器

    目录 开启任务调度器vTaskStartScheduler函数 xPortStartScheduler开启任务调度器函数 启动第一个任务 prvStartFirstTask开启第一个任务函数 vPortSVCHandler SVC中断服务函
  • 13_FreeRTOS消息队列

    目录 队列简介 FreeRTOS队列特点 队列操作基本过程 队列结构体介绍 队列结构体整体示意图 队列相关API函数介绍 创建队列相关API函数介绍 往队列写入消息API函数 往队列写入消息函数入口参数解析 从队列读取消息API函数 实验源
  • golang XML解析

    使用微信支付的时候遇到这样一种情况 xff1a 支付成功之后微信会发送一个通知过来 xff0c 这个通知包含xml格式的数据 xff0c 其中有一个字段是这样的 xff1a coupon id n 代 金 券
  • FreeRTOS系列-- heap_4.c内存管理分析

    FreeRTOS系列 heap 4 c内存管理分析 heap 4 c简介理解heap 4 c的关键点图示heap 4 c内存申请过程图示heap 4 c内存合并过程内存初始化源码分析内存申请源码分析内存释放分析空闲块内存合并源码分析 hea

随机推荐

  • Cordova概述

    Cordova Apache Cordova is an open source mobile development framework It allows you to use standard web technologies HTM
  • Openstack学习(增加卷迁移限速)

    声明 xff1a 本博客欢迎转发 xff0c 但请保留原作者信息 博客地址 xff1a http blog csdn net halcyonbaby 内容系本人学习 研究和总结 xff0c 如有雷同 xff0c 实属荣幸 xff01 Ope
  • dht11 新手原理详解(附代码)

    dht11详解 dht11原理 简介 DHT11作为一款低价 入门级的温湿度传感器 xff0c 常用于我们的单片机设计实例中 它应用专用的数字模块采集技术和温湿度传感技术 xff0c 确保产品具有极高的可靠性与卓越的长期稳定性 传感器包括一
  • git推送报错 Your branch is ahead of 'origin/master' by 1 commit

    当出现no changes added to commit use git add and or git commit a git commit之后 xff0c 用git status xff0c 打印信息为 xff1a Your bran
  • ubuntu如何降级gcc

    ubuntu版本 xff1a ubuntu 18 04 安装指定版本的gcc g 43 43 xff0c 然后做如下链接 sudo apt get install gcc 4 5 g 43 43 4 5 cpp 4 5 gcc 4 5 mu
  • arm-linux开发环境之(busybox-ls命令)终端显示颜色

    在开发板终端中输入ls命令后终端文件夹和文件显示颜色 linux主机 xff1a ubuntu 12 04 交叉编译器 xff1a gcc version 4 6 2 20110630 prerelease 开发板kernel xff1a
  • 活体识别5:论文笔记之FeatherNets

    说明 这篇文章是这次比赛的第三名 xff1a ChaLearn Face Anti spoofing Attack Detection Challenge 64 CVPR2019 xff0c 此次比赛项目是人脸防欺诈攻击检测 论文标题 xf
  • c++中使用dlopen加载动态库中带类参数的函数

    说明 我一直都知道dlopen的大概用法 但是dlopen毕竟是c语言的函数 xff0c 能否加载带c 43 43 类型传参的函数 xff0c 我有点不确定 今天有空验证了下 xff0c 是可以的 extern C 只影响了函数在动态库中的
  • 将pytorch的pth文件固化为pt文件

    说明 我参考了一个开源的人像语义分割项目mobile phone human matting xff0c 这个项目提供了预训练模型 xff0c 我想要将该模型固化 xff0c 然后转换格式后在嵌入式端使用 该项目保存模型的代码如下 xff1
  • ARM汇编1:如何在C语言中使用汇编

    如何在C语言中使用汇编语言 我最近对ARM的NEON编程有兴趣 xff0c 主要是为了想学习一些矩阵计算加速相关的知识 但是我又不想写纯粹的汇编语言 xff0c 我想在C语言中嵌入汇编来使用 经过检索学习 xff0c 我找到两种可行的方式
  • EEPROM和flash的区别

    之前对各种存储器一直不太清楚 xff0c 今天总结一下 存储器分为两大类 xff1a ram和rom ram就不讲了 xff0c 今天主要讨论rom rom最初不能编程 xff0c 出厂什么内容就永远什么内容 xff0c 不灵活 后来出现了
  • python中import cv2遇到的错误及安装方法

    从x86 64 43 ubuntu14 04 43 python3 5中import cv2 opencv3 3 遇到以下错误 xff1a ImportError libSM so 6 cannot open shared object f
  • 多目标跟踪-MOT16数据集格式介绍

    背景介绍 多目标跟踪的问题是这样的 xff1a 有一段视频 xff0c 视频是由 N 个 连续帧构成的 从第一帧到最后一帧 xff0c 里面有多个目标 xff0c 不断地有出有进 xff0c 不断地运动 我们的目的是对每个目标 xff0c
  • opencv-python的格式转换 RGB与BGR互转

    opencv读取图片的默认像素排列是BGR xff0c 和很多其他软件不一致 xff0c 需要转换 这里转一下国外博客的一个方法 xff0c 基于python语言 BGR to RGB OpenCV image to Matplotlib
  • np.maximum()函数详解——将数组中小于某值的数用0代替

    目标 xff1a 把数组中小于某个值的数都设为0 np max a axis 61 None out 61 None keepdims 61 False 求a中的最大值 np maximum xff1a a b out 61 自定义 a 与
  • python-opencv 使用LBP特征检测人脸

    概述 最近在做人脸检测相关功能 xff0c 目前注意到比较传统 xff08 非深度 xff09 人脸检测特征包括harr和LBP HOG用于行人检测更多些 xff0c opencv包括了这两种特征算法 xff0c 并且相对来说 xff0c
  • 机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR

    一 概述 这里主要记录自己的一些感悟 xff0c 不是很系统 想要详细系统的理论 xff0c 请参考文末的 图像处理之特征提取 个人不是专业cv工程师 xff0c 很多细节没有深究 xff0c 描述可能不严谨 在总结物体检测算法之前先把基础
  • win7 wifi 无Internet访问权限或者有限的访问权限

    自己家的无线路由器 xff0c 手机和笔记本都使用正常 xff0c 但是一台新笔记本连上之后总是提示 有限的访问权限 xff0c 无法连公网 网上的很多办法都不管用 xff0c 什么设置静态IP或者重启路由 xff0c 基本都是瞎扯 好在一
  • springboot 本地调试没问题,打包运行报错原因

    1 如果引用了本地jar包或者so库 xff0c dll库等文件 xff0c 需要在打包的时候都加载进去 如下图 xff1a 本地正常 xff0c 打包的时候谨记 xff0c 需要打包进去 xff0c 怎么验证是否打包成功呢 xff1f 我
  • CMakeList学习笔记

    hello cpp为源文件 构建一个CMakeLists txt cmake minimum required VERSION 2 8 project hello add executable hello hello cpp 在目录中的bu