在与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
有没有办法检查C:/
是否是一个有效的“目录”,而不必在此位置创建文件并检查是否成功然后将其删除?
执行目录检查的上下文是获取只读位置,创建文件可能完全失败或需要提升权限(在这种情况下不需要)
答案 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)