我在处理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)