cmake 編寫備忘錄 舉例說明

2021-10-05 17:01:03 字數 2322 閱讀 6365

cmake大小寫不敏感cmake 使用#新增注釋

cmake 中的基礎引數型別是字串字串列表字串列表可以使用;空格分隔

可以使用foreach命令或list命令操作字元列表

空白字元包括空格換行製表符,用於分隔引數

示例:

#以下兩種方式等效

set(var a b c)

set(var a;b;c)

#使用`${}`可對引數進行替換

command($)

#替換後為:

command(a b c)

#如果需要將 var 作為單獨的字串引數

command("$")

#替換後為

command("a b c")

關於${}的更多說明,可以查閱shell 中 $() 和 ${} 的區別-舉例說明

if(expression)

# then section.

command1(args ...)

command2(args ...)

...elseif(expression2)

# elseif section.

command1(args ...)

command2(args ...)

...else(expression)

# else section.

command1(args ...)

command2(args ...)

...endif(expression)

更多請參考:

include($env/tools/cmake/project.cmake)
set(env /home)
set(var a b c)

# loop over a, b,c with the variable f

foreach(f $)

message($)

endforeach(f)

# define a macro hello

macro(hello message)

message($)

endmacro(hello)

# call the macro with the string "hello world"

hello("hello world")

函式在cmake2.6以後的版本才支援

# define a function hello

function(hello message)

message($)

endfunction(hello)

函式可以使用return()返回,如果想要返回值,只能通過傳參的方法

function(get_lib lib_file lib_name lib_path)

#message("lib_name:""$")

set(__lib "__lib-notfound")

#message("__lib:""$")

find_library(__lib $ $)

if(__lib strequal "__lib-notfound")

message("don't find $ librarys in $")

return()

endif()

#message("__lib:""$")

set($ $parent_scope)

endfunction(get_lib)

set命令中parent_scope表示傳遞給函式呼叫者所擁有的變數

參考:字串能夠包含多行

set(var "

hello

world

")message("\$= $")

# prints out

$=hello

world

cmake commands:

MFC編寫技巧及備忘錄

1 如果 量不大,可以直接檢視每次malloc或new的地方是否出現記憶體洩漏。2 在程式的入口處加上 crtsetbreakalloc 1654 然後點除錯執行,通過shift f11按鍵定位開闢記憶體空間 的 1 在 vs2008 下編譯c 程式 發現找不到 std int.h 原因stdint...

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...