如何检查string是否是有效目录(如果它是驱动器号)



我在处理cmake时偶然发现了一个奇怪的现象。

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

再生产代码:

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:/总是为假,对于C:/Windows总是为真

是否有一种方法来检查C:/是否是一个有效的"目录",而不必在这个位置上创建一个文件,并检查是否成功,然后删除它?

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

感谢@Fraser,我在CMake 2.8.11.2版本中跟踪了这种行为,但在2.8.12.2中没有。但是,据我所知,http://www.cmake.org/files/v2.8/CMakeChangeLog-2.8.12.1中没有提到任何IS_DIRECTORY的修复。

我建议使用最小版本,以确保一致的行为,然后

 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12.2)

相关内容

最新更新