cmake——list

cmake之list

在CMake中,list命令用于处理列表(Lists)。下面是一些常用的list命令的参数和示例:

  1. list(APPEND listName element1 [element2 ...]): 向列表末尾添加元素。

    • listName: 列表的名称。
    • element1 [element2 ...]: 要追加到列表末尾的元素。
    • 用法: 将指定的元素追加到列表的末尾。
    set(myList 1 2 3)
    list(APPEND myList 4 5)
    message(STATUS "APPEND: ${myList}")  # 输出:APPEND: 1;2;3;4;5
    
  2. list(INSERT listName index element1 [element2 ...]): 在指定位置插入元素。

    • listName: 列表的名称。
    • index: 要插入元素的位置。
    • element1 [element2 ...]: 要插入的元素。
    • 用法: 在指定位置插入元素。
    set(myList 1 2 3)
    list(INSERT myList 2 5)
    message(STATUS "INSERT: ${myList}")  # 输出:INSERT: 1;2;5;3
    
  3. list(REMOVE_ITEM listName element1 [element2 ...]): 从列表中移除指定的元素。

    • listName: 列表的名称。
    • element1 [element2 ...]: 要从列表中移除的元素。
    • 用法: 从列表中移除指定的元素。
    set(myList 1 2 3)
    list(REMOVE_ITEM myList 2)
    message(STATUS "REMOVE_ITEM: ${myList}")  # 输出:REMOVE_ITEM: 1;3
    
  4. list(REMOVE_AT listName index): 移除指定位置的元素。

    • listName: 列表的名称。
    • index: 要移除的元素的位置。
    • 用法: 移除列表中指定位置的元素。
    set(myList 1 2 3)
    list(REMOVE_AT myList 1)
    message(STATUS "REMOVE_AT: ${myList}")  # 输出:REMOVE_AT: 1;3
    
  5. list(LENGTH listName outputVariable): 获取列表的长度。

    • listName: 列表的名称。
    • outputVariable: 用于存储列表长度的变量。
    • 用法: 获取列表的长度。
    set(myList 1 2 3)
    list(LENGTH myList len)
    message(STATUS "LENGTH: ${len}")  # 输出:LENGTH: 3
    
  6. list(GET listName index outputVariable): 获取列表中指定位置的元素。

    • listName: 列表的名称。
    • index: 要获取的元素的位置。
    • outputVariable: 用于存储获取的元素的变量。
    • 用法: 获取列表中指定位置的元素。
    set(myList 1 2 3)
    list(GET myList 1 elem)
    message(STATUS "GET: ${elem}")  # 输出:GET: 2
    
  7. list(FIND listName value outputVariable): 查找列表中第一次出现指定值的位置。

    • listName: 列表的名称。
    • value: 要查找的元素的值。
    • outputVariable: 用于存储查找到的位置的变量。
    • 用法: 查找列表中第一次出现指定值的位置。
    set(myList 1 2 3)
    list(FIND myList 2 index)
    message(STATUS "FIND: ${index}")  # 输出:FIND: 1
    
  8. list(REVERSE listName): 反转列表的顺序。

    • listName: 列表的名称。
    • 用法: 反转列表的顺序。
    set(myList 1 2 3)
    list(REVERSE myList)
    message(STATUS "REVERSE: ${myList}")  # 输出:REVERSE: 3;2;1
    

这些是一些常见的list命令的用法。CMake的文档中还有更多的参数和选项,具体取决于你的需求和CMake版本。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMake中,要添加子目录,需要在父目录的CMakeLists.txt文件中使用add_subdirectory()命令。这个命令的语法是add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])。source_dir是子目录的路径,binary_dir是可选的二进制输出路径,EXCLUDE_FROM_ALL是可选的参数,用于指示该子目录是否被排除在构建过程之外。 在父目录的CMakeLists.txt文件中,你可以使用add_subdirectory()命令来添加一个子目录,并且在构建过程中同时构建该子目录。同时,在子目录的CMakeLists.txt文件中,你可以定义该子目录的源文件、头文件等。例如,你的目录结构可以是这样的: ├── CMakeLists.txt # 父目录的CMakeLists.txt ├── main.cpp # 父目录的源文件,包含main函数 └── sub # 子目录 ├── CMakeLists.txt # 子目录的CMakeLists.txt ├── test.h # 子目录的头文件 └── test.cpp # 子目录的源文件 在父目录的CMakeLists.txt文件中,你可以添加如下代码来添加子目录: ``` add_subdirectory(sub) ``` 这样,当你构建父目录时,CMake会自动构建子目录,并将子目录中的源文件和头文件包含在构建过程中。这样,你就可以在父目录中使用子目录中定义的函数和变量了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CMake入门二——子目录的嵌套](https://blog.csdn.net/weixin_44688770/article/details/128855559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[cmake][转载]add_subdirectory详解](https://blog.csdn.net/FL1623863129/article/details/120968730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值