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

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

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

軟件介紹

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

使用方法

1. 下載本項(xiàng)目

2. 雙擊運(yùn)行hello文件夾下的run.bat

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

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

注意:使用前請(qǐng)備份你的代碼


(如果無法正常使用,請(qǐng)?jiān)囍惭bvisual studio 2013的32位運(yùn)行時(shí)組件,可到官網(wǎng):https://www.microsoft.com/zh-cn/download/details.aspx?id=40784 中下載vcredist_x86.exe并安裝)

cxx-clean-include的一些測(cè)試結(jié)果

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

https://github.com/MSOpenTech/redis

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

cxx-clean-include的作用

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


cxx-clean-include可以做到

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

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

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

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

關(guān)于cxx-clean-include的實(shí)際作用,舉個(gè)例子,假設(shè)有一個(gè)文件hello.cpp,里面的內(nèi)容是:

#include "a.h"                    // a.h文件的內(nèi)容是:class A{};

#include "b.h"                    // b.h文件的內(nèi)容是:#include <stdio.h>

#include "c.h"                    // c.h文件的內(nèi)容是:class C{};

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

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

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

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

cxx-clean-include將對(duì)hello.cpp文件進(jìn)行分析:

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

~ 2. 其次,經(jīng)過分析,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對(duì)hello.cpp進(jìn)行清理后,hello.cpp將變?yōu)?/p>

class A;

#include <stdio.h>

#include "c.h"                    // c.h文件的內(nèi)容是:class C{};

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

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

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

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

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

cxx-clean-include的命令

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

1. 對(duì)于visual studio項(xiàng)目,可以使用以下命令:

cxxclean -vs vs項(xiàng)目名稱

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

// vs項(xiàng)目名稱最好是絕對(duì)路徑,如: d:/vs2005/hello.vcproj、d:/vs2008/hello.vcxproj

該命令將清理整個(gè)vs項(xiàng)目內(nèi)的c++文件,同時(shí)將在當(dāng)前文件夾自動(dòng)生成清理日志

2. 對(duì)于單個(gè)文件夾,可以使用以下命令

cxxclean -clean 文件夾路徑

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

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

該命令將清理該文件夾內(nèi)的c++文件,同時(shí)將在當(dāng)前文件夾自動(dòng)生成清理日志

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

cxxclean -clean 文件夾路徑 -- -I"你的頭文件搜索路徑" -D 需要預(yù)定義的宏 -include 需要強(qiáng)制包含的文件

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

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

cxx-clean-include的命令行參數(shù)

在命令行中輸入cxxclean -help可獲取詳細(xì)的命令行參數(shù)信息

cxx-clean-include提供以下選項(xiàng):

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

                        cxxclean -vs ./hello.vcproj

                        該命令將清理hello項(xiàng)目中的所有c++文件

                    -vs可和-clean結(jié)合使用,例如:

                        cxxclean -vs hello.vcproj -clean hello.cpp

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

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

                        1. cxxclean -clean ../hello/

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

                        2. cxxclean -clean hello.cpp

                           該命令將清理hello項(xiàng)目中的所有c++文件

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

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

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

  -print-vs       - 打印visual studio項(xiàng)目的配置文件內(nèi)容, 例如:打印頭文件搜索路徑、打印項(xiàng)目c++文件列表、打印預(yù)定義宏等等

軟件標(biāo)簽: 頭文件清除

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載