簡體   English   中英

使用 Clang/Ninja 產生所有可能的錯誤

[英]Produce all possible errors with Clang/Ninja

我正在編譯一個相當大的庫,其中包含許多需要引入的外部依賴項。每次嘗試編譯時,我都會收到一個關於缺少 header 文件的新錯誤。 然后我必須 go 並追蹤在哪里可以找到該標題/庫並將其添加到項目包括。 這個編譯-然后-查找-header/source的過程是重復的,需要很多時間。

我希望編譯器繼續嘗試在一個錯誤列表中構建 output 所有缺少的標頭。 使用 Clang 是否可能,如果可以,我該如何控制它? 在相關說明中,一旦我擁有所有標題,是否可以告訴 Clang 報告所有 linker 錯誤/未定義的引用,所以我不必對源文件重復此過程?

我正在尋找編譯器標志來打印所有可能的錯誤(缺少標題)和所有未定義的引用。 換句話說,我希望編譯繼續通過第一個有錯誤的文件並嘗試編譯項目中的所有文件。 編譯器是 Clang (C/C++) 版本 8.0.2。 制作工具是忍者(1.5.3)。 使用 CMake (3.6.4) 生成生成文件。

更新:回首往事,我最初的問題是在錯誤的工具中尋求解決方案。 我不需要將標志傳遞給 Clang,而是需要將標志傳遞給我的制作工具 Ninja。

來自ninja --help

-k N     keep going until N jobs fail [default=1]

所以我會運行 ninja 命令,例如:

ninja -k 100

繼續,直到發現 100 個錯誤或構建成功。 需要注意的一件事是,如果需要錯誤文件來繼續構建過程,則某些錯誤可能會停止整個構建。

您的問題的解決方案:不要編寫 header 文件。 讓電腦替你做。 寫 SQLITE 和 FOSSIL 的 HIPP 博士寫了一個名為 makeheaders http://www.hwaci.com/sw/mkhdr/的實用程序,它工作得很好,讓你更有效率,我一直在使用它。 一個小的 bash 為你做這一切:

for i in *.c 
do
echo "header for $i"
makeheaders $i

如果你的文件是:main.c,你只需要一個頂行#include“main.h”。 我不明白為什么人們不使用它。 HIPP是個天才。 使其成為構建過程的一部分,並在每次編譯時生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM