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

分享

cmake的兩個(gè)命令: option 和 configure

 oskycar 2023-05-26 發(fā)布于上海
本節(jié)要討論的是cmake的兩個(gè)命令: option 和 configure_file
option 選項(xiàng),讓你可以根據(jù)選項(xiàng)值進(jìn)行條件編譯。
configure_file 配置文件,讓你可以在代碼文件中使用CMake中定義的的變量
*
option
Provides an option that the user can optionally select.
option 提供一個(gè)用戶可以任選的選項(xiàng)。語法如下
option(<option_variable> "help string describing option"
            [initial value])
Provide an option for the user to select as ON or OFF. If no initial value is provided, OFF is used.
option 提供選項(xiàng)讓用戶選擇是 ON 或者 OFF ,如果沒有提供初始化值,使用OFF。
也就是說默認(rèn)的值是OFF。

但是請(qǐng)注意:這個(gè)option命令和你本地是否存在編譯緩存的關(guān)系很大。
所以,如果你有關(guān)于 option 的改變,那么請(qǐng)你務(wù)必清理 CMakeCache.txt 和 CMakeFiles 文件夾。
還有,請(qǐng)使用標(biāo)準(zhǔn)的 [initial value] 值 ON 或者 OFF。

可以在命令行通過以下的方式設(shè)置選項(xiàng)
比如想打開 FOO_ENABLE 選項(xiàng) -DFOO_ENABLE=ON
*
configure_file
configure_file 的作用是讓普通文件也能使用CMake中的變量。
也就是說代碼文件中可以使用CMake中的變量。
語法如下:
configure_file(<input> <output>
                    [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
                    [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
Copies an <input> file to an <output> file and substitutes variable values referenced as @VAR@ or ${VAR} in the input file content.
Each variable reference will be replaced with the current value of the variable, or the empty string if the variable is not defined.
Furthermore, input lines of the form:

拷貝一個(gè) <input>(輸入文件) 文件到 <output> (輸出文件),并且替換輸入文件中被 @VAR@ 或者 ${VAR} 引用的變量值。每一個(gè)變量將被替換成當(dāng)前的變量值(注:CMake中的變量值)或者空串當(dāng)變量未定義。

輸入文件中的
#cmakedefine VAR ...
將被替換為
#define VAR ...
或者
/* #undef VAR */
下面看看各選項(xiàng)的意義
COPYONLY
    Copy the file without replacing any variable references or other content. This option may not be used with NEWLINE_STYLE.
    只拷貝文件,不進(jìn)行任何的變量替換。這個(gè)選項(xiàng)在指定了 NEWLINE_STYLE 選項(xiàng)時(shí)不能使用(無效)。
ESCAPE_QUOTES
    Escape any substituted quotes with backslashes (C-style).
    躲過任何的反斜杠(C風(fēng)格)轉(zhuǎn)義。
    注:躲避轉(zhuǎn)義,比如你有個(gè)變量在CMake中是這樣的
    set(FOO_STRING "\"foo\"")
    那么在沒有 ESCAPE_QUOTES 選項(xiàng)的狀態(tài)下,通過變量替換將變?yōu)?""foo"",如果指定了 ESCAPE_QUOTES 選項(xiàng),變量將不變。
@ONLY
    Restrict variable replacement to references of the form @VAR@. This is useful for configuring scripts that use ${VAR} syntax.
    限制變量替換,讓其只替換被 @VAR@ 引用的變量(那么 ${VAR} 格式的變量將不會(huì)被替換)。這在配置 ${VAR} 語法的腳本時(shí)是非常有用的。
    
NEWLINE_STYLE <style>
    Specify the newline style for the output file. Specify UNIX or LF for \n newlines, or specify DOS, WIN32, or CRLF for \r\n newlines. This option may not be used with COPYONLY.
    指定輸出文件中的新行格式。UNIX 和 LF 的新行是 \n ,DOS 和 WIN32 和 CRLF 的新行格式是 \r\n 。 這個(gè)選項(xiàng)在指定了 COPYONLY 選項(xiàng)時(shí)不能使用(無效)。
    

Example

Consider a source tree containing a foo.h.in file:
#cmakedefine FOO_ENABLE
#cmakedefine FOO_STRING "@FOO_STRING@"
An adjacent CMakeLists.txt may use configure_file to configure the header:
option(FOO_ENABLE "Enable Foo" ON)
if(FOO_ENABLE)
  set(FOO_STRING "foo")
endif()
configure_file(foo.h.in foo.h @ONLY)
This creates a foo.h in the build directory corresponding to this source directory. If the FOO_ENABLE option is on, the configured file will contain:
#define FOO_ENABLE
#define FOO_STRING "foo"
Otherwise it will contain:
/* #undef FOO_ENABLE */
/* #undef FOO_STRING */
One may then use the include_directories() command to specify the output directory as an include directory:
include_directories(${CMAKE_CURRENT_BINARY_DIR})
so that sources may include the header as #include <foo.h>.

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多