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