0
点赞
收藏
分享

微信扫一扫

在Cmakelist指令中,aux_source_directory 和 set 的区别

在CMake中,aux_source_directoryset是两个用于定义变量,但用途和行为有所不同的命令。

aux_source_directory

aux_source_directory命令用于自动查找指定目录下的所有源文件,并将文件列表存储在指定变量中。这个命令通常用于项目中自动收集源文件,避免了手动列出所有源文件的需要,特别是当源文件数量较多或经常更改时。

语法:

aux_source_directory(<dir> <variable>)
  • <dir>是你想要搜索源文件的目录。
  • <variable>是存储找到的源文件路径的变量。

例如:

aux_source_directory(. SRC_LIST)

这会将当前目录(.)下的所有源文件列表存储到变量SRC_LIST中。

set

set命令用于显式地设置一个变量的值,可以用于定义源文件列表或任何其他类型的变量值。

语法:

set(<variable> <value1> <value2> ... <valueN>)
  • <variable>是你想要设置的变量名。
  • <value1> <value2> ... <valueN>是要赋给变量的值,可以是一个或多个值,对于源文件列表,这些值通常是文件路径。

例如:

set(SRC_LIST main.cpp helper.cpp)

这会显式地将SRC_LIST变量设置为包含main.cpphelper.cpp两个文件的列表。

区别总结

  • 用途aux_source_directory用于自动查找目录下的所有源文件,而set用于手动设置一个或多个值给变量。
  • 自动化aux_source_directory提供了一种自动化方式来收集源文件,减少了手动维护文件列表的工作;而使用set时,你需要明确知道并指定每一个源文件。
  • 灵活性set命令在设置变量时提供了更高的灵活性,可以用于定义任意类型的数据,包括但不限于文件列表、编译选项、定义等。

为了维持项目的清晰和易于管理,明确列出所有源文件使用set命令更方便。在其他情况下,特别是在源文件频繁变动时,使用aux_source_directory可以减少维护成本。

举报

相关推荐

0 条评论