Categories: C/C++

CMake 設定編譯輸出詳細資訊 Verbose 教學

介紹讓 CMake 在編譯程式時輸出詳細資訊的三種方法,方便監控編譯過程與除錯。

CMake 是一個跨平台的自動化建構系統,如果想讓 CMake 在編譯程式的時候,輸出詳細的資訊,可以採用以下任一種方式。

CMakeLists.txt 設定檔

在專案的 CMakeLists.txt 設定檔中將 CMAKE_VERBOSE_MAKEFILE 設定為 ON,即可讓專案在編譯的時候顯示較為詳細的資訊,包含實際執行的編譯指令以及參數。

# 輸出詳細資訊
set(CMAKE_VERBOSE_MAKEFILE ON)

這樣的設定只會對該 CMakeLists.txt 產生作用,並不會影響到透過 add_subdirectory() 加入的 CMakeLists.txt,如果希望讓每一個 CMakeLists.txt 都可以輸出詳細的資訊,就必須將 CMAKE_VERBOSE_MAKEFILE 設定寫在每一個 CMakeLists.txt 之中。

設定加上 -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON

如果不想更改專案的原始檔案,也可以在執行 cmake 的時候,在參數中自行啟用 CMAKE_VERBOSE_MAKEFILE

# 輸出詳細資訊
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON PROJECT_FOLDER

這樣就會讓產生的每一個 Makefile 都自動輸出詳細資訊。

指令加上 VERBOSE=1

我們也可以在最後執行 make 指令時,加上 VERBOSE=1,讓 make 輸出詳細的資訊:

cmake PROJECT_FOLDER

# 輸出詳細資訊
make VERBOSE=1

這種方式會讓 make 輸出所有的詳細資訊,缺點就是資訊可能會過多。

在設定了 CMAKE_VERBOSE_MAKEFILE 之後,不能以 VERBOSE=0 的方式關閉詳細訊息的輸出,若要關閉 CMAKE_VERBOSE_MAKEFILE,就要重新執行 CMake 將 CMAKE_VERBOSE_MAKEFILE 設定為 OFF 才可以將其關閉。

參考資料:Bytefreaks.net

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago