admin 管理员组

文章数量: 887021


2024年1月9日发(作者:windowsserver2008安装教程)

cmakeforeach用法

在CMake中,foreach命令用于遍历列表并为每个元素执行一系列操作。foreach命令的一般语法如下:

```

foreach( )endforeach

```

下面是一些常见的foreach用法示例:

1.遍历列表:

假设有一个列表`fruit_list`包含多个水果名称,可以使用遍历并输出每个水果名称:

```cmake

set(fruit_list "apple" "banana" "orange")

foreach(fruit ${fruit_list})

message("Fruit: ${fruit}")

endforeach

```

上述代码会输出以下内容:

```

foreach

Fruit: apple

Fruit: banana

Fruit: orange

```

2.遍历范围:

除了遍历列表,你也可以遍历一个范围内的数字。例如:

```cmake

foreach(i RANGE 1 5)

message("Number: ${i}")

endforeach

```

上述代码会输出以下内容:

```

Number: 1

Number: 2

Number: 3

Number: 4

Number: 5

```

3.遍历字符串:

如果要遍历一个字符串,可以使用`LIST`关键字将其转换为一个列表。

```cmake

foreach(letter RANGE A Z)

message("Letter: ${letter}")

endforeach

```

上述代码会输出以下内容:

```

Letter: A

Letter: B

Letter: C

...

Letter: Z

```

4.遍历目录文件:

在CMake中,可以使用`FILE`关键字来获取一个目录下的所有文件,并将其放入一个列表中。然后,可以使用foreach遍历该列表并对每个文件执行特定操作。

```cmake

file(GLOB files_to_process "*.cpp")

foreach(file ${files_to_process})

add_executable(${file} ${file})

endforeach

```

上述代码会将目录中的所有.cpp文件编译为对应的可执行文件。

5. 使用foreach生成目标列表:

有时候需要生成一系列类似的目标。可以使用foreach来动态生成这些目标。

```cmake

set(sources "" "" "")

foreach(source ${sources})

string(REPLACE ".cpp" "" target_name ${source})

add_executable(${target_name} ${source})

endforeach

```

上述代码会为每个源文件生成一个对应的可执行文件。

6. foreach和函数调用:

foreach还可以与自定义函数一起使用。例如,假设有一个函数`process_file(`,可以使用foreach调用该函数对列表中的每个文件进行处理:

```cmake

function(process_file file)

#执行一系列操作

message("Processing file: ${file}")

endfunction

set(files "" "" "")

foreach(current_file ${files})

process_file(${current_file})

endforeach

```

上述代码会分别输出以下内容:

```

Processing file:

Processing file:

Processing file:

```

以上是一些常见的foreach用法示例。在实际开发中,foreach命令是一个非常有用的工具,可以根据需要灵活地遍历不同类型的数据结构,并执行相关操作。


本文标签: 遍历 使用 列表 文件 生成