西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

去除c++多余頭文件的工具(cxx clean include)

  • 去除c++多余頭文件的工具(cxx clean include)
  • 軟件大小:7.8M
  • 更新時間:2017-03-12 09:00
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產軟件 / 免費軟件 / 文本編輯
  • 軟件等級:4級
  • 應用平臺:WinAll, Win7, Mac
  • 官方網站:暫無
  • 應用備案:
好評:50%
壞評:50%

軟件介紹

cxx-clean-include是一個用于清理c++文件中多余#include并自動生成前置聲明的工具,目前支持對visual studio單個c++項目作清理,以及清理整個文件夾下的c++文件,可以對visual studio項目(2005及以上版本)進行清理,也可以對單個文件夾(含子文件夾)的c++源文件進行清理。

使用方法

1. 下載本項目

2. 雙擊運行hello文件夾下的run.bat

3. 如果成功的話,hello項目將被清理,且將在hello文件夾下生成清理日志(可使用瀏覽器查看)

4. 將run.bat里面的./hello.vcxproj改成你自己的vs工程文件,就可以清理你的工程了

注意:使用前請備份你的代碼


(如果無法正常使用,請試著安裝visual studio 2013的32位運行時組件,可到官網:https://www.microsoft.com/zh-cn/download/details.aspx?id=40784 中下載vcredist_x86.exe并安裝)

cxx-clean-include的一些測試結果

目前,已在網上的一些開源vs項目上測試使用了本工具(只是自行測試)

https://github.com/MSOpenTech/redis

該項目是由[MS Open Tech組織]將redis移植到windows下的版本,使用本工具清理msvs\RedisServer.vcxproj后發(fā)現共有28個文件(含.c文件和.h頭文件)包含多余的#include,清理后仍可編譯成功。 (清理前須將頭文件包含路徑中的$(SolutionDir)刪掉)

cxx-clean-include的作用

由于cxx-clean-include基于llvm+clang庫編寫而成,依托于clang庫對現有編譯器的兼容,所以本項目也支持大部分msvc、gcc/g++的語法,并完整支持c++11標準。


cxx-clean-include可以做到

 清除c++文件中多余的#include(不僅可以清理cpp、cxx等后綴的源文件,也可以清理源文件包含的h、hxx、hh等后綴的頭文件)

 自動生成前置聲明(某些時候,會出現包含了某個文件,卻僅使用了該文件內的類的指針或引用,而未訪問其成員的情況,此時cxx-clean-include將移除相應的#include語句,并添加前置聲明)

 自動替換文件(某些時候,會出現#include了某個文件a,卻僅使用到該文件內包含的其中一個文件b的情況,此時cxx-clean-include將遵循頭文件路徑搜索規(guī)則把原有的#include a語句替換成#include b語句)

 針對整個項目進行分析,而不僅分析單個c++源文件,通過采用合適的沖突處理規(guī)則,盡可能清理源文件和頭文件,并盡可能保證清理整個項目后,仍然沒有編譯錯誤

關于cxx-clean-include的實際作用,舉個例子,假設有一個文件hello.cpp,里面的內容是:

#include "a.h"                    // a.h文件的內容是:class A{};

#include "b.h"                    // b.h文件的內容是:#include <stdio.h>

#include "c.h"                    // c.h文件的內容是:class C{};

#include "d.h"                    // d.h文件未被使用:class D{};

A *a;                             // 類A來自于a.h

void test_b() { printf(""); }     // 函數printf來自于stdio.h

C c;                              // 類C來自于c.h

cxx-clean-include將對hello.cpp文件進行分析:

~ 1. 首先,由于hello.cpp僅使用到a.h、b.h、c.h的內容,因此,可移除#include "d.h"語句

~ 2. 其次,經過分析,hello.cpp僅使用了a.h中類A的指針,因此,可新增前置聲明class A,并移除#include "a.h"語句

~ 3. 最后,hello.cpp雖然包含了b.h,卻僅使用到b.h所包含的stdio.h文件,因此,可將#include "b.h"語句替換為#include <stdio.h>

于是,在使用cxx-clean-include對hello.cpp進行清理后,hello.cpp將變?yōu)?/p>

class A;

#include <stdio.h>

#include "c.h"                    // c.h文件的內容是:class C{};

A *a;                             // 類A來自于a.h

void test_b() { printf(""); }     // 函數printf來自于stdio.h

C c;                              // 類C來自于c.h

可以看出,hello.cpp第1行和第2行均被替換為更合適的語句。第4行則被移除

注意:本項目在windows和linux系統(tǒng)下均可進行編譯,具體編譯過程可參考clang插件的編譯方法。

cxx-clean-include的命令

cxx-clean-include目前支持清理visual studio項目(vs2005及以上版本),同時支持清理指定文件夾下的c++文件,同時輸出結果是html格式,方便查看

1. 對于visual studio項目,可以使用以下命令:

cxxclean -vs vs項目名稱

// 比如:cxxclean -vs d:/vs2005/hello.vcproj

// vs項目名稱最好是絕對路徑,如: d:/vs2005/hello.vcproj、d:/vs2008/hello.vcxproj

該命令將清理整個vs項目內的c++文件,同時將在當前文件夾自動生成清理日志

2. 對于單個文件夾,可以使用以下命令

cxxclean -clean 文件夾路徑

// 比如:cxxclean -clean d:/a/b/hello/

// 文件夾路徑最好是絕對路徑,如: d:/a/b/hello/、/home/proj/hello/

該命令將清理該文件夾內的c++文件,同時將在當前文件夾自動生成清理日志

但很多情況下需要指定更詳細的編譯條件,如指定頭文件路徑、預定義宏等,clang庫已內置提供了相應的命令行參數供使用,可使用如下方式(注意添加--號):

cxxclean -clean 文件夾路徑 -- -I"你的頭文件搜索路徑" -D 需要預定義的宏 -include 需要強制包含的文件

(其中:-I、-D、-include均可使用多次)

// 例如:cxxclean -clean d:/a/b/hello/ -- -I"../../" -I"../" -I"./" -I"../include" -D DEBUG -D WIN32 -include platform.h

cxx-clean-include的命令行參數

在命令行中輸入cxxclean -help可獲取詳細的命令行參數信息

cxx-clean-include提供以下選項:

  -vs=<string>    - 清理指定的visual studio項目(vs2005版本及以上): 例如: 

                        cxxclean -vs ./hello.vcproj

                        該命令將清理hello項目中的所有c++文件

                    -vs可和-clean結合使用,例如:

                        cxxclean -vs hello.vcproj -clean hello.cpp

                        該命令將根據hello.vcproj項目的配置(如頭文件搜索路徑、預定義宏等配置)來清理hello.cpp文件

  -clean=<string> - 清理指定的文件或文件夾, 例如: 

                        1. cxxclean -clean ../hello/

                           該命令將清理hello文件夾(包括子文件夾)下的c++文件

                        2. cxxclean -clean hello.cpp

                           該命令將清理hello項目中的所有c++文件

  -no             - 即no overwrite的首字母縮寫, 當傳入此參數時,本工具僅執(zhí)行分析并打印分析結果,所有的c++文件將不會被改動

  -onlycpp        - 僅允許清理源文件(cpp、cc、cxx后綴等), 禁止清理頭文件(h、hxx、hh后綴等)

  -print-project  - 打印本次清理的配置, 例如:打印待清理的c++文件列表、打印允許清理的文件夾或c++文件列表等等

  -print-vs       - 打印visual studio項目的配置文件內容, 例如:打印頭文件搜索路徑、打印項目c++文件列表、打印預定義宏等等

軟件標簽: 頭文件清除

軟件截圖

去除c++多余頭文件的工具(cxx clean include)

其他版本下載

發(fā)表評論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
TOP
軟件下載