如何获取CMake构建目录名称(不含完整路径)
提取CMake构建目录名称的方法
CMake 3.23没有专门的内置变量直接返回构建目录的名称(即路径的最后一段),但可以通过字符串处理命令从${CMAKE_CURRENT_BINARY_DIR}中提取,下面是两种可靠的实现方式:
方法1:使用get_filename_component命令
这是CMake中处理路径的原生工具,专门用于提取路径的不同组成部分:
get_filename_component(BUILD_DIR_NAME "${CMAKE_CURRENT_BINARY_DIR}" NAME)
执行后,${BUILD_DIR_NAME}变量就会存储cmake-build-debug-vs这个目录名。
方法2:使用字符串正则替换
利用CMake的字符串匹配替换功能,移除路径中最后一个分隔符之前的所有内容:
string(REGEX REPLACE ".*/" "" BUILD_DIR_NAME "${CMAKE_CURRENT_BINARY_DIR}")
该正则表达式会匹配并清除路径里最后一个斜杠(含之前的全部内容),仅保留最后一段目录名。
额外说明
- 两种方法在Windows和类Unix系统下都能正常工作,CMake会自动适配不同系统的路径分隔符(
\或/)。 - 若构建目录为根目录(这种场景极少),上述方法会返回空字符串,实际使用时可根据需求添加判断逻辑。
内容的提问来源于stack exchange,提问作者shashashamti2008
相关产品推荐
相关产品推荐

