如何检查字符串是否是一个有效的目录(如果它是一个驱动器号)

时间:2014-05-07 09:17:04

标签: cmake

在与cmake打交道时,我偶然发现了一个奇怪的事情。

当我尝试检查字符串是否是有效目录时,我使用IS_DIRECTORY但是如果我正在测试驱动器的字符串,我会得到错误。

Repro代码:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
IF( IS_DIRECTORY "C:/") # "C:/Windows" works
    MESSAGE(STATUS "Is a dir")
ELSE()
    MESSAGE(STATUS "Is not a dir")
ENDIF()

C:/始终为false,C:/Windows

为true

有没有办法检查C:/是否是一个有效的“目录”,而不必在此位置创建文件并检查是否成功然后将其删除?

执行目录检查的上下文是获取只读位置,创建文件可能完全失败或需要提升权限(在这种情况下不需要)

1 个答案:

答案 0 :(得分:2)

感谢@Fraser,我跟踪了CMake版本2.8.11.2中出现的这种行为,但是没有出现在2.8.12.2中。但是,AFAIK http://www.cmake.org/files/v2.8/CMakeChangeLog-2.8.12.1中没有更改日志条目,提及对IS_DIRECTORY的任何修复

我建议使用min版本以确保一致行为

 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12.2)
相关问题