解讀這一段cmakelist
file(GLOB_RECURSE ALL_SRCS "*.cpp")
file(GLOB_RECURSE NODE_SRCS "src/*_node.cpp")
file(GLOB_RECURSE THIRD_PARTY_SRCS "third_party/*.cpp")
list(REMOVE_ITEM ALL_SRCS ${NODE_SRCS})
list(REMOVE_ITEM ALL_SRCS ${THIRD_PARTY_SRCS})
獲取所有.cpp文件作為源文件(ALL_SRCS)(為列表ALL_SRCS) 但是剔除這兩部分NODE_SRCS、THIRD_PARTY_SRCS
關於file GLOB_RECURSE
還可以指定目錄,file(GLOB_RECURSE ALL_SRCS " *.cpp")
當然不止局限於這一類文件多種文件都可獲得的
關於list
另外關於listcamke關於list官方文檔
list(GET <list> <elementindex> [<element index> ...]
<output variable>)
list(APPEND <list><element> [<element> ...])
list(FIND <list> <value><output variable>)
list(INSERT <list><element_index> <element> [<element> ...])
list(REMOVE_ITEM <list> <value>[<value> ...])
list(REMOVE_AT <list><index> [<index> ...])
list(REMOVE_DUPLICATES <list>)
list(REVERSE <list>)
list(SORT <list>)
LENGTH返回列表的長度
GET返回列表中指定下標的元素
APPEND添加新元素到列表中
INSERT 將新元素插入到列表中指定的位置
REMOVE_ITEM從列表中刪除某個元素
REMOVE_AT從列表中刪除指定下標的元素
REMOVE_DUPLICATES從列表中刪除重復的元素
REVERSE 將列表的內容實地反轉,改變的是列表本身,而不是其副本
SORT 將列表按字母順序實地排序,改變的是列表本身,而不是其副本
列表的子命令APPEND, INSERT, REMOVE_AT, REMOVE_ITEM,REMOVE_DUPLICATES, REVERSE以及SORT在當前的CMake變量域創建一些新值。與SET命令類似,即使列表本身是在父域中定義的,LIST命令也只會在當前域創建新的變量值,為了將這些操作的結果向上傳遞,需要通過SET PARENT_SCOPE, SET CACHE INTERNAL或其他值域擴展的方法。