可以通过get_directory_property来获取指定目录的属性。
命令格式
get_directory_property(<variable> [DIRECTORY <dir>] <prop-name>)
-
<variable>:目录属性的获取结果
-
DIRECTORY:指定待获取属性所属的目录,如果只是获取当前目录,则可以不指定后续的DIRECTORY选项。<dir>目录可以是相对路径也可以是绝对路径,如果是相对路径,则是相对于当前目录的路径。
需要注意的是,指定的目录必须被add_subdirectory()命令或include_directories()等命令添加过,或者是CMake构建启动时的顶层目录。
-
<prop-name>:属性名称。
简单示例
接下来我们简单演示如何获取目录的属性VARIABLES,该属性表示当前已定义的CMake变量列表。
-
获取当前目录
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 3.22.1) project(test) get_directory_property(vars VARIABLES) message("# Get current DIRECTORY property VARIABLES: ${vars}")
运行
cmake .
输出内容(只截取部分):# Get current DIRECTORY property VARIABLES: CMAKE_ADDR2LINE;CMAKE_AR;CMAKE_AR;C……
-
获取指定目录(目录未添加的情况)
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 3.22.1) project(test) get_directory_property(vars DIRECTORY test VARIABLES) message("# Get test DIRECTORY property VARIABLES: ${vars}")
运行
cmake .
会提示目录找不到:CMake Error at CMakeLists.txt:23 (get_directory_property): get_directory_property DIRECTORY argument provided but requested directory not found. This could be because the directory argument was invalid or, it is valid but has not been processed yet.
-
获取指定目录(目录已添加的情况)
假定我们在当前目录已经创建test子目录,CMakeLists.txt文件内容如下:
cmake_minimum_required(VERSION 3.22.1) project(test) add_subdirectory(test) get_directory_property(vars DIRECTORY test VARIABLES) message("# Get test DIRECTORY property VARIABLES: ${vars}")
运行
cmake .
,能正常获取到属性VARIABLES。
网友评论