亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Cmake中強(qiáng)大的輸出函數(shù)message示例解析

 更新時(shí)間:2023年05月31日 14:55:23   作者:泡沫o0  
這篇文章主要介紹了Cmake中強(qiáng)大的輸出函數(shù)message解析,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

message函數(shù)說(shuō)明

在CMake中,message()函數(shù)用于向終端輸出信息。

message([<mode>] "message text" ...)函數(shù)的<mode>參數(shù)可以是以下之一:

  • (none): 等同于STATUS,但不推薦使用。
  • STATUS: 輸出的信息會(huì)被發(fā)送到CMake的狀態(tài)消息流,這是message()函數(shù)的默認(rèn)模式。在命令行上,這些消息通常會(huì)被顯示出來(lái),但在圖形界面中,它們可能會(huì)被重定向到其他地方。
  • WARNING: 輸出的信息會(huì)被發(fā)送到CMake的警告消息流。這些消息會(huì)被顯示出來(lái),并且會(huì)標(biāo)記為警告。
  • AUTHOR_WARNING: 這是WARNING模式的一種變體,只有在CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量為FALSE時(shí)才會(huì)產(chǎn)生警告。
  • SEND_ERROR: 輸出的信息會(huì)被發(fā)送到CMake的錯(cuò)誤消息流,但不會(huì)立即停止CMake的處理過(guò)程。
  • FATAL_ERROR: 輸出的信息會(huì)被發(fā)送到CMake的錯(cuò)誤消息流,并立即停止CMake的處理過(guò)程。
參數(shù)使用場(chǎng)景底層原理優(yōu)點(diǎn)缺點(diǎn)
(none)當(dāng)你想輸出一條普通的狀態(tài)消息,但不希望給它指定任何特殊的模式時(shí)。輸出的信息會(huì)被發(fā)送到CMake的狀態(tài)消息流。簡(jiǎn)單易用,不需要指定模式。不推薦使用,因?yàn)樗男袨榭赡軙?huì)在未來(lái)的CMake版本中改變。
STATUS當(dāng)你想輸出一條狀態(tài)消息,例如進(jìn)度信息或配置信息時(shí)。輸出的信息會(huì)被發(fā)送到CMake的狀態(tài)消息流。明確表示這是一條狀態(tài)消息,易于理解。在圖形界面中,這些消息可能會(huì)被重定向到其他地方,不一定能被用戶看到。
WARNING當(dāng)你想輸出一條警告消息,例如某個(gè)選項(xiàng)已被棄用或某個(gè)操作可能會(huì)失敗時(shí)。輸出的信息會(huì)被發(fā)送到CMake的警告消息流。明確表示這是一條警告消息,可以引起用戶的注意。過(guò)多的警告消息可能會(huì)讓用戶感到困擾,忽視真正重要的警告。
AUTHOR_WARNING當(dāng)你是項(xiàng)目的開發(fā)者,并且你想輸出一條只有在開發(fā)模式下才會(huì)顯示的警告消息時(shí)。輸出的信息會(huì)被發(fā)送到CMake的警告消息流,但只有在CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量為FALSE時(shí)才會(huì)產(chǎn)生警告。可以避免在用戶模式下顯示不必要的警告。如果CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量被設(shè)置為TRUE,這些警告會(huì)被忽略。
SEND_ERROR當(dāng)你遇到一個(gè)錯(cuò)誤,但你希望CMake繼續(xù)處理剩下的命令時(shí)。輸出的信息會(huì)被發(fā)送到CMake的錯(cuò)誤消息流,但不會(huì)立即停止CMake的處理過(guò)程。可以在發(fā)生錯(cuò)誤時(shí)繼續(xù)執(zhí)行CMake的處理過(guò)程。由于CMake的處理過(guò)程沒(méi)有立即停止,可能會(huì)導(dǎo)致更多的錯(cuò)誤。
FATAL_ERROR當(dāng)你遇到一個(gè)嚴(yán)重的錯(cuò)誤,你希望立即停止CMake的處理過(guò)程時(shí)。輸出的信息會(huì)被發(fā)送到CMake的錯(cuò)誤消息流,并立即停止CMake的處理過(guò)程。可以在發(fā)生嚴(yán)重錯(cuò)誤時(shí)立即停止CMake的處理過(guò)程,防止錯(cuò)誤的擴(kuò)散。一旦使用,CMake的處理過(guò)程會(huì)立即停止,無(wú)法執(zhí)行任何后續(xù)的命令。

STATUS

在CMake中,message(STATUS "Your message")常常被用來(lái)輸出構(gòu)建過(guò)程中的狀態(tài)信息。以下是一些具體的使用示例:

1.輸出變量的值:

set(MY_VARIABLE "Hello, CMake!") message(STATUS "MY_VARIABLE is: ${MY_VARIABLE}")

在這個(gè)例子中,message(STATUS "MY_VARIABLE is: ${MY_VARIABLE}")會(huì)輸出一條狀態(tài)消息,內(nèi)容為"MY_VARIABLE is: Hello, CMake!"。${MY_VARIABLE}是CMake的變量引用語(yǔ)法,它會(huì)被替換為MY_VARIABLE變量的值。

2.輸出配置信息:

option(USE_MY_LIBRARY "Use my library" ON) message(STATUS "USE_MY_LIBRARY is set to: ${USE_MY_LIBRARY}")

在這個(gè)例子中,option(USE_MY_LIBRARY "Use my library" ON)定義了一個(gè)名為USE_MY_LIBRARY的選項(xiàng),初始值為ONmessage(STATUS "USE_MY_LIBRARY is set to: ${USE_MY_LIBRARY}")會(huì)輸出一條狀態(tài)消息,內(nèi)容為"USE_MY_LIBRARY is set to: ON"或"USE_MY_LIBRARY is set to: OFF",取決于USE_MY_LIBRARY選項(xiàng)的值。

3.輸出構(gòu)建目標(biāo)信息:

add_library(MyLibrary SHARED src/my_library.cpp) message(STATUS "Added shared library target: MyLibrary")

在這個(gè)例子中,add_library(MyLibrary SHARED src/my_library.cpp)添加了一個(gè)名為MyLibrary的共享庫(kù)目標(biāo)。message(STATUS "Added shared library target: MyLibrary")會(huì)輸出一條狀態(tài)消息,內(nèi)容為"Added shared library target: MyLibrary"。

這些狀態(tài)消息在命令行上運(yùn)行CMake時(shí)會(huì)被顯示出來(lái),幫助你了解CMake的處理過(guò)程。在圖形界面的CMake工具(如CMake GUI或IDE的CMake集成)中,這些消息可能會(huì)被顯示在專門的輸出窗口或日志文件中。

WARNING

在CMake中,message(WARNING "message text")函數(shù)用于輸出警告消息。這些消息會(huì)被發(fā)送到CMake的警告消息流,并在終端中顯示出來(lái)。同時(shí),這些消息會(huì)被標(biāo)記為警告,這意味著它們可能會(huì)引起用戶的注意,或者在某些情況下,可能會(huì)導(dǎo)致構(gòu)建過(guò)程失敗。

例如,假設(shè)你正在編寫一個(gè)需要某個(gè)庫(kù)才能正常工作的項(xiàng)目,你可以使用find_package()函數(shù)來(lái)查找這個(gè)庫(kù)。如果find_package()函數(shù)沒(méi)有找到這個(gè)庫(kù),你可以使用message(WARNING)函數(shù)來(lái)輸出一個(gè)警告消息,告訴用戶這個(gè)庫(kù)沒(méi)有找到:

find_package(SomeLibrary)
if(NOT SomeLibrary_FOUND)
    message(WARNING "SomeLibrary not found, some features will not be available.")
endif()

在這個(gè)例子中,如果CMake在配置過(guò)程中沒(méi)有找到SomeLibrary,它會(huì)輸出一個(gè)警告消息,內(nèi)容為"SomeLibrary not found, some features will not be available."。這個(gè)警告消息會(huì)被發(fā)送到CMake的警告消息流,并在終端中顯示出來(lái),從而讓用戶知道他們可能需要安裝SomeLibrary才能使用所有的功能。

請(qǐng)注意,message(WARNING)函數(shù)只是輸出警告消息,它不會(huì)改變CMake的處理過(guò)程。如果你想在發(fā)生錯(cuò)誤時(shí)停止CMake的處理過(guò)程,你應(yīng)該使用message(FATAL_ERROR)函數(shù)。

AUTHOR_WARNING

AUTHOR_WARNING模式在CMake中用于輸出開發(fā)者警告。這種模式的警告只有在CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量為FALSE時(shí)才會(huì)顯示。這個(gè)變量默認(rèn)為FALSE,但如果你在CMakeLists.txt文件中設(shè)置了這個(gè)變量為TRUE,那么AUTHOR_WARNING模式的警告就不會(huì)顯示。

這種機(jī)制可以用于區(qū)分開發(fā)者警告和用戶警告。例如,如果你是一個(gè)庫(kù)的開發(fā)者,你可能希望在開發(fā)過(guò)程中看到所有的警告,包括開發(fā)者警告,但是你的用戶可能只關(guān)心他們需要知道的警告,不希望看到開發(fā)者警告。這時(shí),你就可以在你的CMakeLists.txt文件中使用AUTHOR_WARNING模式來(lái)輸出開發(fā)者警告,然后告訴你的用戶設(shè)置CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量為TRUE來(lái)隱藏這些警告。

以下是一個(gè)AUTHOR_WARNING模式的示例:

# 如果某個(gè)變量沒(méi)有被設(shè)置,輸出一個(gè)開發(fā)者警告
if(NOT DEFINED MY_VARIABLE)
  message(AUTHOR_WARNING "MY_VARIABLE is not defined")
endif()

在這個(gè)示例中,如果MY_VARIABLE變量沒(méi)有被設(shè)置,CMake會(huì)輸出一個(gè)開發(fā)者警告,內(nèi)容為"MY_VARIABLE is not defined"。如果CMAKE_SUPPRESS_DEVELOPER_WARNINGS變量被設(shè)置為TRUE,這個(gè)警告就不會(huì)顯示。

SEND_ERROR

SEND_ERROR模式在message()函數(shù)中用于輸出錯(cuò)誤信息,但不會(huì)立即停止CMake的處理過(guò)程。這意味著CMake會(huì)繼續(xù)處理剩余的命令,直到遇到一個(gè)FATAL_ERROR或者處理完所有命令。然后,CMake會(huì)以非零狀態(tài)退出,表示出現(xiàn)了錯(cuò)誤。

以下是一個(gè)SEND_ERROR的示例:

if(NOT DEFINED REQUIRED_VARIABLE)
    message(SEND_ERROR "REQUIRED_VARIABLE is not defined")
endif()

在這個(gè)示例中,我們首先檢查變量REQUIRED_VARIABLE是否已經(jīng)定義。如果沒(méi)有定義,我們就使用message(SEND_ERROR ...)輸出一條錯(cuò)誤信息。這條錯(cuò)誤信息會(huì)被發(fā)送到CMake的錯(cuò)誤消息流,并且CMake的處理過(guò)程不會(huì)立即停止。相反,CMake會(huì)繼續(xù)處理剩余的命令,直到遇到一個(gè)FATAL_ERROR或者處理完所有命令。然后,CMake會(huì)以非零狀態(tài)退出,表示出現(xiàn)了錯(cuò)誤。

請(qǐng)注意,雖然SEND_ERROR不會(huì)立即停止CMake的處理過(guò)程,但它會(huì)阻止生成步驟的執(zhí)行。也就是說(shuō),如果CMake在處理過(guò)程中遇到了一個(gè)SEND_ERROR,那么即使CMake成功處理了所有命令,生成步驟也不會(huì)執(zhí)行。這是因?yàn)?code>SEND_ERROR表示了一個(gè)嚴(yán)重的問(wèn)題,需要用戶的注意和修復(fù)。

FATAL_ERROR

FATAL_ERROR是CMake中message()函數(shù)的一種模式,用于輸出錯(cuò)誤消息并立即停止CMake的處理過(guò)程。當(dāng)CMake遇到一個(gè)無(wú)法繼續(xù)的錯(cuò)誤時(shí),你可以使用message(FATAL_ERROR "error message")來(lái)輸出錯(cuò)誤消息并停止處理。

例如,假設(shè)你正在編寫一個(gè)需要C++11或更高版本的項(xiàng)目,你可以使用以下代碼來(lái)檢查C++編譯器是否支持C++11:

if(NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 11)
    message(FATAL_ERROR "This project requires C++11 or higher!")
endif()

在這個(gè)例子中,如果CMake檢測(cè)到C++編譯器的標(biāo)準(zhǔn)版本小于11,它會(huì)輸出錯(cuò)誤消息"This project requires C++11 or higher!",并立即停止處理。這意味著CMake不會(huì)生成構(gòu)建系統(tǒng),也不會(huì)執(zhí)行任何后續(xù)的CMake命令。這可以防止在不滿足項(xiàng)目要求的情況下嘗試構(gòu)建項(xiàng)目,從而避免可能的構(gòu)建錯(cuò)誤和問(wèn)題。

請(qǐng)注意,FATAL_ERROR應(yīng)該謹(jǐn)慎使用,只有在確實(shí)需要立即停止CMake處理過(guò)程的情況下才應(yīng)使用。在大多數(shù)情況下,使用WARNINGSEND_ERROR模式可能更合適。

到此這篇關(guān)于Cmake中強(qiáng)大的輸出函數(shù)message解析的文章就介紹到這了,更多相關(guān)Cmake輸出函數(shù)message內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++用Dijkstra(迪杰斯特拉)算法求最短路徑

    C++用Dijkstra(迪杰斯特拉)算法求最短路徑

    Dijkstra(迪杰斯特拉)算法是典型的最短路徑路由算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。下面這篇文章就給大家介紹關(guān)于C++用Dijkstra算法(迪杰斯特拉算法)求最短路徑的方法,下面來(lái)一起看看吧。
    2016-12-12
  • C語(yǔ)言實(shí)現(xiàn)紙牌24點(diǎn)小游戲

    C語(yǔ)言實(shí)現(xiàn)紙牌24點(diǎn)小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)紙牌24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語(yǔ)言單鏈表的圖文示例講解

    C語(yǔ)言單鏈表的圖文示例講解

    單鏈表是鏈表的其中一種基本結(jié)構(gòu)。一個(gè)最簡(jiǎn)單的結(jié)點(diǎn)結(jié)構(gòu)如圖所示,它是構(gòu)成單鏈表的基本結(jié)點(diǎn)結(jié)構(gòu)。在結(jié)點(diǎn)中數(shù)據(jù)域用來(lái)存儲(chǔ)數(shù)據(jù)元素,指針域用于指向下一個(gè)具有相同結(jié)構(gòu)的結(jié)點(diǎn)。?因?yàn)橹挥幸粋€(gè)指針結(jié)點(diǎn),稱為單鏈表
    2023-02-02
  • C語(yǔ)言動(dòng)態(tài)內(nèi)存分配和內(nèi)存操作函數(shù)使用詳解

    C語(yǔ)言動(dòng)態(tài)內(nèi)存分配和內(nèi)存操作函數(shù)使用詳解

    但是在實(shí)際的編程中,往往會(huì)發(fā)生這種情況,即所需的內(nèi)存空間取決于實(shí)際輸入的數(shù)據(jù),而無(wú)法預(yù)先確定 。為了解決上述問(wèn)題,C語(yǔ)言提供了一些內(nèi)存管理函數(shù),這些內(nèi)存管理函數(shù)可以按需要?jiǎng)討B(tài)的分配內(nèi)存空間,也可把不再使用的空間回收再次利用
    2022-12-12
  • vscode遠(yuǎn)程連接服務(wù)器(免密登錄+遠(yuǎn)程開發(fā))

    vscode遠(yuǎn)程連接服務(wù)器(免密登錄+遠(yuǎn)程開發(fā))

    vscode的遠(yuǎn)程連接功能十分方便,本文就來(lái)介紹一下vscode遠(yuǎn)程連接服務(wù)器,主要包括免密登錄和遠(yuǎn)程開發(fā),感興趣的可以了解一下
    2024-07-07
  • C++中l(wèi)ist的使用方法及常用list操作總結(jié)

    C++中l(wèi)ist的使用方法及常用list操作總結(jié)

    這篇文章主要介紹了C++中l(wèi)ist的使用方法及常用list操作總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • c++重載運(yùn)算符時(shí)返回值為類的對(duì)象或者返回對(duì)象的引用問(wèn)題

    c++重載運(yùn)算符時(shí)返回值為類的對(duì)象或者返回對(duì)象的引用問(wèn)題

    這篇文章主要介紹了c++重載運(yùn)算符時(shí)返回值為類的對(duì)象或者返回對(duì)象的引用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • tinyxml 常用的C++ XML解析器非常優(yōu)秀

    tinyxml 常用的C++ XML解析器非常優(yōu)秀

    讀取和設(shè)置xml配置文件是最常用的操作,試用了幾個(gè)C++的XML解析器,個(gè)人感覺(jué)TinyXML是使用起來(lái)最舒服的,因?yàn)樗腁PI接口和Java的十分類似,面向?qū)ο笮院芎?/div> 2012-11-11
  • C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解

    C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解

    本文主要介紹了C語(yǔ)言中g(shù)etchar()與putchar()函數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C語(yǔ)言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    C語(yǔ)言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    這篇文章主要介紹了C語(yǔ)言詳解如何模擬內(nèi)存函數(shù),用到了mencpy與memmove兩個(gè)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論