国精产品999国精产品蜜臀,开心五月激情中文在线,久久免费看少妇喷水高潮,午夜高清拍精品福利


    <i id="izbqq"><video id="izbqq"><thead id="izbqq"></thead></video></i>
      <b id="izbqq"><legend id="izbqq"></legend></b>
    1. <b id="izbqq"></b>
      您當前的位置 :環(huán)球傳媒網(wǎng)>前瞻 > 正文
      全球微速訊:#Spdlog# Spdlog的編譯與使用
      2023-01-12 22:55:54 來源:程序員客棧 編輯:

      “文章所涉及內(nèi)容更多來自網(wǎng)絡(luò),在此聲明,并感謝知識的貢獻者!”


      (資料圖片)

      CMake—

      Cmake簡介

      CMake是一個跨平臺的編譯(Build)工具,可以用簡單的語句來描述所有平臺的編譯過程。

      CMake能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

      CMake 不僅可以編譯源代碼、制作程序庫、產(chǎn)生適配器(wrapper)、還可以用任意的順序建構(gòu)執(zhí)行檔。CMake 支持 in-place 建構(gòu)(二進檔和源代碼在同一個目錄樹中)和 out-of-place 建構(gòu)(二進檔在別的目錄里),因此可以很容易從同一個源代碼目錄樹中建構(gòu)出多個二進檔。CMake 也支持靜態(tài)與動態(tài)程式庫的建構(gòu)。

      https://blog.csdn.net/weixin_45525272/article/details/122053959

      下載并安裝Cmake

      https://cmake.org/download/

      Cmake編譯教程

      https://www.bilibili.com/read/cv14249845

      https://blog.csdn.net/m0_61812914/article/details/127952081

      Eigen—

      Eigen簡介:

      Eigen是一個高層次的C ++庫,有效支持線性代數(shù),矩陣和矢量運算,數(shù)值分析及其相關(guān)的算法。

      下載Eigen源碼

      https://eigen.tuxfamily.org/index.php?title=Main_Page

      https://gitlab.com/libeigen/eigen/-/releases/3.4.0

      編譯安裝Eigen源碼

      https://www.likecs.com/show-204786214.html#sc=2625

      https://blog.csdn.net/OOFFrankDura/article/details/103586893

      PCL—

      PCL簡介

      PCL(Point CloudLibrary)是在吸收了前人點云相關(guān)研究基礎(chǔ)上建立起來的大型跨平臺開源C++編程庫,它實現(xiàn)了大量點云相關(guān)的通用算法和高效數(shù)據(jù)結(jié)構(gòu),涉及到點云獲取、濾波、分割、配準、檢索、特征提取、識別、追蹤、曲面重建、可視化等。支持多種操作系統(tǒng)平臺,可在Windows、Linux、Android、Mac OS X、部分嵌入式實時系統(tǒng)上運行。如果說OpenCV是2D信息獲取與處理的結(jié)晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權(quán)方式,可以免費進行商業(yè)和學(xué)術(shù)應(yīng)用。

      https://blog.csdn.net/qq_41951923/article/details/103375681

      https://blog.csdn.net/expert_joe/article/details/123342098

      下載并安裝PCL

      https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1

      下載PCL源碼

      http://pointclouds.org/documentation/index.html

      編譯PCL

      https://blog.csdn.net/weixin_43186817/article/details/103469057

      https://blog.csdn.net/luolaihua2018/article/details/116919716

      https://blog.csdn.net/hanxue20100/article/details/116654750

      https://blog.csdn.net/weixin_44456692/article/details/113508167

      https://blog.csdn.net/whutt_/article/details/122756505

      https://blog.csdn.net/m0_61812914/article/details/127952081

      Spdlog編譯—

      Spdlog簡介

      spdlog是一款優(yōu)秀的基于C++11的輕量級的日志管理庫,使用時只需要引入頭文件即可。將記錄日志交給spdlog,事半功倍。

      下載spdlog源碼

      https://github.com/gabime/spdlog

      編譯spdlog源碼

      使用Cmake GUI編譯spdlog

      -在spdlog源碼中新建build文件夾

      -在Cmake Gui 配置項目的編譯信息

      -配置VS的屬性

      -點擊Generate,生成spdlog.sln

      -vs 2017編譯生成 spdlog.dll

      生成的目標文件:

      spdlog_project\spdlog-1.x\build\Release\spdlog.lib

      Spdlog調(diào)用—

      -新建項目

      -創(chuàng)建第三方庫文件夾

      -將編譯生成的spdlog.lib文件復(fù)制到第三方庫ThirdLib文件夾

      -將spdlog源碼中include文件夾下的spdlog文件夾復(fù)制到ThirdLib文件夾

      -配置spdlog庫的引用信息

      https://www.jianshu.com/p/64bcc1fe3fab

      -在自定義類中引用spdlog

      -運行效果

      Spdlog教程—

      Spdlog特性

      -非???/p>

      -只包含頭文件

      -無需依賴第三方庫

      -支持跨平臺 - Linux /Windows on 32/64 bits

      -支持多線程

      -可對日志文件進行循環(huán)輸出

      -可每日生成日志文件

      -支持控制臺日志輸出

      -可選的異步日志

      -支持日志輸出級別

      -可自定義日志格式

      Spdlog 功能:

      Spdlog只有一個管家register,管家按照日志名字管理所有日志(即文件日志和控制臺日志),管家有提供很多服務(wù),主要有輸出日志級別,刷新文件日志方式,設(shè)置日志格式等

      Spdlog 結(jié)構(gòu):

      spdlog可以分成三級結(jié)構(gòu),從上而下是logger registry、logger、sink,其各自功能如下:

      logger registry(日志管理器):負責(zé)管理所有的logger,用戶建立的所有l(wèi)ogger都會在registry處進行登記然后統(tǒng)一管理

      logger(日志記錄器):是用戶直接操作的對象,通過操作logger進行日志邏輯的生成

      sink(日志記錄器槽):受logger控制,執(zhí)行具體的動作(動作包括寫入日志文件/輸出到控制臺)

      一個logger registry管多個logger,一個logger管多個sink。logger registry中的logger是通過name進行對應(yīng)的。后面使用的時候可以直接通過名稱獲取對應(yīng)的日志對象。

      有了這種層級結(jié)構(gòu),在代碼調(diào)用的時候,logger的每個操作都會下順到sink層面,調(diào)用sink的對象。比如像一些set_pattern()和set_level()。

      日志庫的目的就是把日志信息寫到指定地方。從上面對于結(jié)構(gòu)的功能描述,sink才是真正操作日志進行寫操作的結(jié)構(gòu),那sink可以把日志信息寫到哪里呢?主要有三個去向:??1)控制臺輸出(stdout)——默認輸出方式??2)日志文件??3)數(shù)據(jù)庫或其他外部實體

      Spdlog 存儲:

      spdlog中提供了以下幾種存放方式:

      1)當天日志(spdlog::daliy_logger):記錄當天的所有日志,但在指定時間點會把日志清空

      2)循環(huán)日志(spdlog::rotating_logger):日志創(chuàng)建成功后,如果寫入的日志大小超過限制就會寫入到新日志文件中去。不過同時存在的日志總數(shù)是有上限的,達到上限后按指定策略淘汰。需要特別注意的是日志更迭的規(guī)則是:當日志A存滿時,將日志A名稱更改為B,再新建一個日志命名為A,依次類推,直到達到上限數(shù)字

      3)單個日志(spdlog::basic_logger):只有一個日志文件,所有日志都會在該文件中累加

      除了3種文件日志外,輸出終端(控制臺)也比較常用啦

      4)輸出終端(spdlog::stdout_color):日志打印至終端,不同等級日志顏色不同

      Spdlog 日志等級

      enum level_enum {

      trace= SPDLOG_LEVEL_TRACE 0

      debug= SPDLOG_LEVEL_DEBUG 1

      info = SPDLOG_LEVEL_INFO 2(默認輸出等級)

      warn= SPDLOG_LEVEL_WARN 3

      err= SPDLOG_LEVEL_ERROR 4

      critical= SPDLOG_LEVEL_CRITICAL 5

      off = SPDLOG_LEVEL_OFF 6

      }

      日志級別

      控制臺日志級別

      SPDLOG_DEBUG

      SPDLOG_INFO

      SPDLOG_WARN

      SPDLOG_ERROR

      SPDLOG_CRITICAL

      旋轉(zhuǎn)日志級別

      SPDLOG_INFO_FILE

      SPDLOG_WARN_FILE

      SPDLOG_ERROR_FILE

      SPDLOG_CRITICAL_FILE

      Spdlog 異步與同步

      同步/異步指日志信息是否直接輸出/寫入文件,直接寫就是同步,稍后寫就是異步。spdlog默認的狀態(tài)就是同步了。

      異步狀態(tài)下,日志會先存入隊列,然后由線程從隊列中取數(shù)據(jù),當隊列滿的時候會有淘汰策略。如果工作線程中拋出了異常,向隊列寫入下一條日志時異常會再次拋出,可以在寫入隊列時捕捉工作者線程的異常,淘汰策略一般兩種:

      1)阻塞新來的的日志,直到隊列有剩余空間(默認處理方式)

      2)把新的日志丟掉(需要設(shè)定:spdlog::set_async_mode(隊列大小,

      Spdlog 單線程與多線程

      spdlog中提供了單線程和多線程模式,由使用者在對象創(chuàng)建中自己指定。??st:單線程版本,不用加鎖,效率高,但不保證線程安全??mt:多線程版本,保證多線程并發(fā)情況線程安全,但效率稍低

      Spdlog 輸出格式:

      Pattern說明

      輸出格式的Pattern中可以有若干 %開頭的標記,含義如下表:

      標記 說明

      %v 實際需要被日志記錄的文本,如果文本中有{占位符}會被替換

      %t 線程標識符

      %P 進程標識符

      %n 日志記錄器名稱

      %l 日志級別

      %L 日志級別簡寫

      %a 簡寫的周幾,例如Thu

      %A 周幾,例如Thursday

      %b 簡寫的月份,例如Aug

      %B 月份,例如August

      %c 日期時間,例如Thu Aug 23 15:35:46 2014

      %C 兩位年份,例如14

      %Y 四位年份,例如2014

      %D 或 %x MM/DD/YY格式日期,例如"08/23/14

      %m 月份,1-12之間

      %d 月份中的第幾天,1-31之間

      %H 24小時制的小時,0-23之間

      %I 12小時制的小時,1-12之間

      %M 分鐘,0-59

      %S 秒,0-59

      %e 當前秒內(nèi)的毫秒,0-999

      %f 當前秒內(nèi)的微秒,0-999999

      %F 當前秒內(nèi)的納秒, 0-999999999

      %p AM或者PM

      %r 12小時時間,例如02:55:02 pm

      %R 等價于%H:%M,例如23:55

      %T 或 %X HH:MM:SS

      %z 時區(qū)UTC偏移,例如+02:00

      %+ 表示默認格式

      Spdlog 刷新參數(shù):

      刷新方式指日志何時寫入文件中,spdlog提供了兩種刷新方式:

      1)程序正常退出時寫入(默認)

      2)程序運行中,在指定位置進行寫入(實時刷新日志,便于鎖定錯誤所在位置)

      要想使用實時刷新日志,spdlog提供了兩種方法:

      方法一:logger對象->flush_on(設(shè)定等級),flush_on是一次性刷新,執(zhí)行到此時按照設(shè)定等級進行日志刷新。

      方法二:logger對象->flush_every(周期時間),flush_every是設(shè)置刷新周期,定時進行刷新。刷新的級別采取默認了。

      參考資料:

      https://zhuanlan.zhihu.com/p/337877916

      https://blog.csdn.net/xmcy001122/article/details/105864473/?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

      https://www.cnblogs.com/Braveliu/p/12375556.html

      https://www.jianshu.com/p/b0322391d?a9f

      https://www.freesion.com/article/397888765/

      https://blog.gmem.cc/spdlog

      http://www.360doc.com/content/20/0114/10/65839724_886099666.shtml

      https://blog.csdn.net/gls_nuaa/article/details/126738472

      https://blog.csdn.net/qq_36583051/article/details/115628620

      https://cloud.tencent.com/developer/article/2102109

      常見問題—

      VS SDK安裝:

      VS2017報錯之“errorMSB8036: 找不到 Windows SDK 版本8.1。請安裝所需的版本的 Windows SDK 或...”解決方法

      https://blog.csdn.net/weixin_43051346/article/details/122407923

      "0xa0"轉(zhuǎn)換為十進制為160,表示漢字的開始。這種錯誤主要是因為拷貝導(dǎo)致,在程序頭或者尾部,可能又空格之類的符號

      https://blog.csdn.net/yunken28/article/details/96331082

      https://blog.csdn.net/lihaidong1991/article/details/104503187

      關(guān)鍵詞: 輸出終端 輸出格式

      相關(guān)閱讀
      分享到:
      版權(quán)和免責(zé)申明

      凡注有"環(huán)球傳媒網(wǎng)"或電頭為"環(huán)球傳媒網(wǎng)"的稿件,均為環(huán)球傳媒網(wǎng)獨家版權(quán)所有,未經(jīng)許可不得轉(zhuǎn)載或鏡像;授權(quán)轉(zhuǎn)載必須注明來源為"環(huán)球傳媒網(wǎng)",并保留"環(huán)球傳媒網(wǎng)"的電頭。

      Copyright ? 1999-2017 cqtimes.cn All Rights Reserved 環(huán)球傳媒網(wǎng)-重新發(fā)現(xiàn)生活版權(quán)所有 聯(lián)系郵箱:8553 591@qq.com