[CMake] Bug in find_file() command ?
Glenn Coombs
glenn.coombs at gmail.com
Tue Aug 28 12:59:23 EDT 2012
I need to test for the presence of a directory called driver_root. I
couldn't see a find_directory() command in the help so I am using the
following lines in my CMakeLists.txt:
message("1 DRV_ROOT_CHECK: ${DRV_ROOT_CHECK}")
if (DEFINED ENV{DRV_ROOT})
find_file(DRV_ROOT_CHECK driver_root $ENV{DRV_ROOT}/..)
message("2 DRV_ROOT_CHECK: ${DRV_ROOT_CHECK}")
endif()
message("3 DRV_ROOT_CHECK: ${DRV_ROOT_CHECK}")
find_file(DRV_ROOT_CHECK driver_root
../CVSFILES
../..
../../CVSFILES
../../..
../../../CVSFILES
../../../..
)
message("4 DRV_ROOT_CHECK: ${DRV_ROOT_CHECK}")
set(DRV_ROOT "${DRV_ROOT_CHECK}" CACHE PATH "Location of
driver tree")
set(DRV_ROOT_CHECK "${DRV_ROOT_CHECK}" CACHE INTERNAL "Location of
driver tree")
message("5 DRV_ROOT_CHECK: ${DRV_ROOT_CHECK}")
if (DRV_ROOT_CHECK)
message(" DRV_ROOT: ${DRV_ROOT}")
else()
message(FATAL_ERROR "Unable to locate driver_root directory.
Please set DRV_ROOT variable.")
endif()
It works fine on my machine but fails on one of our build machines. Both
machines are Windows 7 (64-bit) and are using CMake 2.8.9. On my machine
it produces this output:
1 DRV_ROOT_CHECK:
3 DRV_ROOT_CHECK:
4 DRV_ROOT_CHECK: C:/data/perforceCheckouts/sim/vxe/CVSFILES/driver_root
5 DRV_ROOT_CHECK: C:/data/perforceCheckouts/sim/vxe/CVSFILES/driver_root
DRV_ROOT: C:/data/perforceCheckouts/sim/vxe/CVSFILES/driver_root
but on the build machine it produces this output:
1 DRV_ROOT_CHECK:
3 DRV_ROOT_CHECK:
4 DRV_ROOT_CHECK: C:/Windows/System32/driver_root
5 DRV_ROOT_CHECK: C:/Windows/System32/driver_root
There is no file or directory called driver_root in the windows/systsem32
folder. If I change the find_file() command to this:
find_file(DRV_ROOT_CHECK driver_root PATHS
../CVSFILES
../..
../../CVSFILES
../../..
../../../CVSFILES
../../../..
NO_DEFAULT_PATH
)
then it works producing this output:
1 DRV_ROOT_CHECK:
3 DRV_ROOT_CHECK:
4 DRV_ROOT_CHECK: C:/glenn/CVSFILES/driver_root
5 DRV_ROOT_CHECK: C:/glenn/CVSFILES/driver_root
Is this a bug in cmake or can somebody explain how it found a non-existant
file/folder in the windows/system32 folder ?
--
Glenn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120828/96f845b7/attachment.htm>
More information about the CMake
mailing list