小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

CMake 手冊詳解(八)

 鍵盤農(nóng)夫 2019-12-04

上周正在準備轉(zhuǎn)正答辯,手冊翻譯的事情暫時擱淺了一段時間;現(xiàn)在繼續(xù)《CMake手冊詳解》之第八篇:

=======================================================

CMD#14:configure_file: 將一份文件拷貝到另一個位置并修改它的內(nèi)容。

  configure_file(<input> <output>
[COPYONLY] [ESCAPE_QUOTES] [@ONLY])

  將文件<input>拷貝到<output>然后替換文件內(nèi)容中引用到的變量值。如果<input>是相對路徑,它被評估的基礎(chǔ)路徑是當前源碼路徑。<input>必須是一個文件,而不是個路徑。如果<output>是一個相對路徑,它被評估的基礎(chǔ)路徑是當前二進制文件路徑。如果<output>是一個已有的路徑,那么輸入文件將會以它原來的名字放到那個路徑下。

  該命令替換掉在輸入文件中,以${VAR}格式或@VAR@格式引用的任意變量,如同它們的值是由CMake確定的一樣。 如果一個變量還未定義,它會被替換為空。如果指定了COPYONLY選項,那么變量就不會展開。如果指定了ESCAPE_QUOTES選項,那么所有被替換的變量將會按照C語言的規(guī)則被轉(zhuǎn)義。該文件將會以CMake變量的當前值被配置。如果指定了@ONLY選項,只有@VAR@格式的變量會被替換而${VAR}格式的變量則會被忽略。這對于配置使用${VAR}格式的腳本文件比較有用。任何類似于#cmakedefine VAR的定義語句將會被替換為#define VAR或者/* #undef VAR */,視CMake中對VAR變量的設(shè)置而定。任何類似于#cmakedefine01 VAR的定義語句將會被替換為#define VAR 1或#define VAR 0,視VAR被評估為TRUE或FALSE而定。

(configure_file的作用是讓普通文件也能使用CMake中的變量?!g注)

CMD#15:create_test_sourcelist: 為構(gòu)建測試程序創(chuàng)建一個測試驅(qū)動器和源碼列表。

  create_test_sourcelist(sourceListName driverName
test1 test2 test3
EXTRA_INCLUDE include.h
FUNCTION function)

  測試驅(qū)動器是一個將很多小的測試代碼連接為一個單一的可執(zhí)行文件的程序。這在為了縮減總的需用空間而用很多大的庫文件去構(gòu)建靜態(tài)可執(zhí)行文件的時候,特別有用。構(gòu)建測試驅(qū)動所需要的源文件列表會在變量sourceListName中。DriverName變量是測試驅(qū)動器的名字。其它的參數(shù)還包括一個測試源代碼文件的清單,中間可以用分號隔開。每個測試源碼文件中應(yīng)該有一個與去掉擴展名的文件名同名的函數(shù)(比如foo.cxx 文件里應(yīng)該有int foo(int, char*[]);)(和main的函數(shù)簽名一樣——譯注)。DriverName可以在命令行中按名字調(diào)用這些測試中的每一個。如果指定了EXTRA_INCLUDE,那么它后面的參數(shù)(即include.h——譯注)會被包含到生成的文件里。如果指定了FUNCTION選項,那么它后面的參數(shù)(即function——譯注)會被認為是一個函數(shù)名,傳遞給它的參數(shù)是一個指向argc的指針和argv。這個選項可以用來為每個測試函數(shù)添加額外的命令行參數(shù)處理過程。CMake變量CMAKE_TESTDRIVER_BEFORE_TESTMAIN用來設(shè)置在調(diào)用測試的main函數(shù)之前調(diào)用的代碼。

 CMD#16:define_property: 定義并描述(Document)自定義屬性。

   define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |
                    TEST | VARIABLE | CACHED_VARIABLE>
                    PROPERTY <name> [INHERITED]
                    BRIEF_DOCS <brief-doc> [docs...]
                    FULL_DOCS <full-doc> [docs...])

  在一個域(scope)中定義一個可以用set_property和get_property命令訪問的屬性。這個命令對于把文檔和可以通過get_property命令得到的屬性名稱關(guān)聯(lián)起來非常有用。第一個參數(shù)確定了這個屬性可以使用的范圍。它必須是下列值中的一個:

  GLOBAL    = 與全局命名空間相關(guān)聯(lián)
DIRECTORY = 與某一個目錄相關(guān)聯(lián)
TARGET = 與一個目標相關(guān)聯(lián)
SOURCE = 與一個源文件相關(guān)聯(lián)
TEST = 與一個以add_test命名的測試相關(guān)聯(lián)
VARIABLE = 描述(document)一個CMake語言變量
CACHED_VARIABLE = 描述(document)一個CMake語言緩存變量

  注意,與set_property和get_property不相同,不需要給出實際的作用域;只有作用域的類型才是重要的。PROPERTY選項必須有,它后面緊跟要定義的屬性名。如果指定了INHERITED選項,那么如果get_property命令所請求的屬性在該作用域中未設(shè)置,它會沿著鏈條向更高的作用域去搜索。DIRECTORY域向上是GLOBAL。TARGET,SOURCE和TEST向上是DIRECTORY。

  BRIEF_DOCS和FULL_DOCS選項后面的參數(shù)是和屬性相關(guān)聯(lián)的字符串,分別作為變量的簡單描述和完整描述。在使用get_property命令時,對應(yīng)的選項可以獲取這些描述信息。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多