談談Disruptor 和 Aeron 這兩個開源庫

語言 CPP

前言

  雖然 VSCodeC++ 編輯器非常受大家的歡迎,無論是大佬還是小白都說對其愛不釋手...  我...用了一段時間後發現實在是麻煩,配置往往花費我大量時間。可以說真的是吃力不討好(個人觀點,不代表其他人)!所以,用了一段時間後我又默默的用起了自己的 HBuilderX !  淦! HBuilderX 不是主力前端嗎?額~是的,CPP在這裡不是很受寵,但沒關係啊(主要是真的好用)!CPP的基本語法還是支持的,再加上自己完善了一下“自定義CPP代碼塊”後更是如虎添翼!HBuilderX NB!  不過,有個最大的問題就是編譯鏈接!因為 HBuilderX 本身並不是為CPP開發的,所以根本不會有這一功能,更苦的是連個插件都沒得...一切都只能靠命令行!  經過一段時間的摸索,最後打算寫一篇總結。力求簡潔、明瞭!  不定期更新!  提示:文件結構如下

<code>+-- demo.cpp
|
+-- demo.ico
|
+-- demo.rc

/<code>

第一章 - 靜態編譯

手動編譯:

  1. 打開 CMD 命令窗口;
  2. 執行命令 g++ -c demo.cpp -o step_one.o ;
  3. 執行命令 ar -cr libstep_two.a step_one.o ;
  4. 執行命令 g++ demo.cpp -L. -Istep_two -static -o release.exe ;
  5. 得到 release.exe 應用程序。

註釋

  1. 原理我不多說了,有興趣的自行了解!力求簡潔、明瞭!
  2. step_one 與 step_two 字符可替換;
  3. release.exe 為輸出應用程序的名字;

批處理腳本:

<code>::使用方法 - 直接將 demo.cpp 託入批處理運行即可,也可使用 CMD 命令傳參數的方式執行。
@echo off
set start=%1
:get_o
if exist %1 (g++ -c %start% -o step_one.o) else (goto get_o)
:get_a
if exist .\\o.o (ar -cr libstep_two.a step_one.o) else (goto get_a)
:get_exe
if exist .\\liba.a (g++ %start% -L. -Istep_two -static -o release) else (goto get_exe)
:del
del DEL /F /A /Q step_one.o
del DEL /F /A /Q libstep_two.a
call release.exe
:end
/<code>

第二章 - 自定義程序 ICO

手動操作

  1. 在 demo.rc 文件中添加 id ICON "path/to/my.ico";
  2. 執行命令 windres demo.rc -O coff -o demo.res;
  3. 執行命令 g++ demo.cpp demo.res -o release.exe;
  4. 得到帶 ICO 的應用程序。

註釋

  1. 原理大致為: 資源文件(.res) + 源文件(.cpp) =編譯=> 帶資源的應用程序(.exe);
  2. 第三步也可以使用靜態編譯:g++ -c demo.cpp -o step_one.o -> ar -cr libstep_two.a step_one.o -> g++ demo.cpp demo.res -L. -Istep_two -static -o release.exe。

批處理腳本

還沒寫

第三章 - 添加版本信息

手動操作

  1. 在 demo.rc 文件中添加
<code>1 VERSIONINFO
FILEVERSION 1,0,0,0 // 文件版本
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4" // 語言(修改前四位)
BEGIN
VALUE "CompanyName", "公司名"
VALUE "FileDescription", "文件描述"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "內部名稱"
VALUE "LegalCopyright", "版權"
VALUE "OriginalFilename", "原始文件名"
VALUE "ProductName", "產品名稱"
VALUE "ProductVersion", "產品版本"
END
END

BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252 // 翻譯
END
END
/<code>
  1. 執行命令 windres demo.rc -O coff -o demo.res;
  2. 執行命令 g++ demo.cpp demo.res -o release.exe;
  3. 得到帶版本信息的應用程序。

註釋

  1. .RC 文件使用的是微軟定義的腳本語言;
  2. 更改語言時需要同時更改 “語言” 和 “翻譯” 兩處內容。“語言” 行("080904E4")修改前四個數字;“翻譯” 行(0x809)修改後三位數字。Example: 簡體中文的 langID 為 0x0804修改“語言”行前四位為 “0804”;修改“翻譯”行後三位為 “804”;修改“語言”信息為“簡體中文”。
  3. .RC資源文件詳情請參考MSDN。

原文:https://www.cnblogs.com/seafever/p/12660507.html


分享到:


相關文章: