日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CMake 手册详解(五)

發(fā)布時間:2024/2/28 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CMake 手册详解(五) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CMake 手冊詳解(五)

CMD#2: add_custom_target?添加一個目標(biāo),它沒有輸出;這樣它就總是會被構(gòu)建。

add_custom_target(Name [ALL] [command1 [args1...]] [COMMAND command2 [args2...] ...] [DEPENDS depend depend depend ... ] [WORKING_DIRECTORY dir] [COMMENT comment] [VERBATIM] [SOURCES src1 [src2...]])

  用Name選項給定的名字添加一個目標(biāo),這個目標(biāo)會引發(fā)給定的那些命令。這個目標(biāo)沒有輸出文件,并且總是被認(rèn)為是過時的,即使那些命令試圖去創(chuàng)建一個與該目標(biāo)同名的文件。使用ADD_CUSTOM_COMMAND命令可以生成一個帶有依賴性的文件。默認(rèn)情況下,沒有目標(biāo)會依賴于自定義目標(biāo)。使用ADD_DEPENDENCIES命令可以添加依賴于該目標(biāo)或者被該目標(biāo)依賴的目標(biāo)。如果指定了ALL選項,這表明這個目標(biāo)應(yīng)該被添加到默認(rèn)的構(gòu)建目標(biāo)中,這樣它每次都會被構(gòu)建(命令的名字不能是ALL)。命令和選項是可選的;如果它們沒有被指定,將會產(chǎn)生一個空目標(biāo)。如果設(shè)定了WORKING_DIRECTORY參數(shù),該命令會在它指定的路徑下執(zhí)行。如果指定了COMMENT選項,后跟的參數(shù)將會在構(gòu)件的時候,在命令執(zhí)行之前,被顯示出來。DEPENDS選項后面列出來的依賴目標(biāo)可以引用add_custom_command命令在相同路徑下(CMakeLists.txt)生成的輸出和文件。

  如果指定了VERBATIM選項,所有傳遞到該命令的選項將會被合適地轉(zhuǎn)義;這樣,該命令調(diào)用的構(gòu)建工具會接收到未經(jīng)改變的參數(shù)。注意,CMake語言處理器會在add_custom_target命令在看到這些參數(shù)之前對它們進行一層轉(zhuǎn)義。推薦使用該參數(shù),因為它保證了正確的行為。當(dāng)未指定該參數(shù)時,轉(zhuǎn)義的行為依賴于平臺,因為CMake沒有針對于特定工具中特殊字符的保護措施。

  SOURCES選項指定了會被包含到自定義目標(biāo)中的附加的源文件。指定的源文件將會被添加到IDE的工程文件中,方便在沒有構(gòu)建規(guī)則的情況下能夠編輯。

CMD#3:add_definitions?為源文件的編譯添加由-D引入的define flag

add_definitions(-DFOO -DBAR ...)

  在編譯器的命令行上,為當(dāng)前路徑以及下層路徑的源文件加入一些define flag。這個命令可以用來引入任何flag,但是它的原意是用來引入預(yù)處理器的定義。那些以-D或/D開頭的、看起來像預(yù)處理器定義的flag,會被自動加到當(dāng)前路徑的COMPILE_DEFINITIONS屬性中。為了后向兼容,非簡單值(non-trival,指的是什么?——譯注)的定義會被留在flags組(flags set)里,而不會被轉(zhuǎn)換。關(guān)于在特定的域以及配置中增加預(yù)處理器的定義,參考路徑、目標(biāo)以及源文件的COMPILE_DEFINITIONS屬性來獲取更多的細節(jié)。

CMD#4:add_dependencies?為頂層目標(biāo)引入一個依賴關(guān)系。

add_dependencies(target-name depend-target1 depend-target2 ...)

  讓一個頂層目標(biāo)依賴于其他的頂層目標(biāo)。一個頂層目標(biāo)是由命令A(yù)DD_EXECUTABLE,ADD_LIBRARY,或者ADD_CUSTOM_TARGET產(chǎn)生的目標(biāo)。為這些命令的輸出引入依賴性可以保證某個目標(biāo)在其他的目標(biāo)之前被構(gòu)建。查看ADD_CUSTOM_TARGET和ADD_CUSTOM_COMMAND命令的DEPENDS選項,可以了解如何根據(jù)自定義規(guī)則引入文件級的依賴性。查看SET_SOURCE_FILES_PROPERTIES命令的OBJECT_DEPENDS選項,可以了解如何為目標(biāo)文件引入文件級的依賴性。

CMD#5:add_executable: 使用給定的源文件,為工程引入一個可執(zhí)行文件。

add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)

  引入一個名為<name>的可執(zhí)行目標(biāo),該目標(biāo)會由調(diào)用該命令時在源文件列表中指定的源文件來構(gòu)建。<name>對應(yīng)于邏輯目標(biāo)名字,并且在工程范圍內(nèi)必須是全局唯一的。被構(gòu)建的可執(zhí)行目標(biāo)的實際文件名將根據(jù)具體的本地平臺創(chuàng)建出來(比如<name>.exe或者僅僅是<name>)。

  默認(rèn)情況下,可執(zhí)行文件將會在構(gòu)建樹的路徑下被創(chuàng)建,對應(yīng)于該命令被調(diào)用的源文件樹的路徑。如果要改變這個位置,查看RUNTIME_OUTPUT_DIRECTORY目標(biāo)屬性的相關(guān)文檔。如果要改變最終文件名的<name>部分,查看OUTPUT_NAME目標(biāo)屬性的相關(guān)文檔。

  如果指定了MACOSX_BUNDLE選項,對應(yīng)的屬性會附加在創(chuàng)建的目標(biāo)上。查看MACOSX_BUNDLE目標(biāo)屬性的文檔可以找到更多的細節(jié)。

  如果指定了EXCLUDE_FROM_ALL選項,對應(yīng)的屬性將會設(shè)置在被創(chuàng)建的目標(biāo)上。查看EXCLUDE_FROM_ALL目標(biāo)屬性的文檔可以找到更多的細節(jié)。

  使用下述格式,add_executable命令也可以用來創(chuàng)建導(dǎo)入的(IMPORTED)可執(zhí)行目標(biāo):

  add_executable(<name> IMPORTED)

?  一個導(dǎo)入的可執(zhí)行目標(biāo)引用了一個位于工程之外的可執(zhí)行文件。該格式不會生成構(gòu)建這個目標(biāo)的規(guī)則。該目標(biāo)名字的作用域在它被創(chuàng)建的路徑以及底層路徑有效。它可以像在該工程內(nèi)的其他任意目標(biāo)一樣被引用。導(dǎo)入可執(zhí)行文件為類似于add_custom_command之類的命令引用它提供了便利。

  關(guān)于導(dǎo)入的可執(zhí)行文件的細節(jié)可以通過設(shè)置以IMPORTED_開頭的屬性來指定。這類屬性中最重要的是IMPORTED_LOCATION(以及它對應(yīng)于具體配置的版本IMPORTED_LOCATION_<CONFIG>);該屬性指定了執(zhí)行文件主文件在磁盤上的位置。查看IMPORTED_*屬性的文檔來獲得更多信息。

總結(jié)

以上是生活随笔為你收集整理的CMake 手册详解(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。