Once the driver project has converted to using cmake that is what I plan to do - use find_path() to look for driver_root/CMakeLists.txt. But in the meantime I'm stuck using find_file() instead which works but it looks like a bug that I need to specify the NO_DEFAULT_PATH option to avoid getting an incorrect match.
-- Glenn On 3 September 2012 09:58, Adolfo Rodríguez Tsouroukdissian < adolfo.rodrig...@pal-robotics.com> wrote: > > > On Tue, Aug 28, 2012 at 6:59 PM, Glenn Coombs <glenn.coo...@gmail.com>wrote: > >> I need to test for the presence of a directory called driver_root. I >> couldn't see a find_directory() command in the help > > > I cannot comment about your issues concerning find_file, but if you know > the name of a file contained in the directory you can use find_path: > > http://cmake.org/cmake/help/v2.8.8/cmake.html#command:find_path > > Cheers, > > Adolfo. > > >> 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 >> >> >> -- >> >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://www.cmake.org/mailman/listinfo/cmake >> > > > > -- > Adolfo Rodríguez Tsouroukdissian > Robotics engineer > adolfo.rodrig...@pal-robotics.com > http://www.pal-robotics.com > > PAL ROBOTICS S.L > c/ Pujades 77-79, 4º4ª > 08005 Barcelona, Spain. > Tel. +34.93.414.53.47 > Fax.+34.93.209.11.09 > > AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos, pueden > contener información privilegiada y/o confidencial que está dirigida > exclusivamente a su destinatario. Si usted recibe este mensaje y no es el > destinatario indicado, o el empleado encargado de su entrega a dicha > persona, por favor, notifíquelo inmediatamente y remita el mensaje original > a la dirección de correo electrónico indicada. Cualquier copia, uso o > distribución no autorizados de esta comunicación queda estrictamente > prohibida. > > CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s) may > contain confidential information which is privileged and intended only for > the individual or entity to whom they are addressed. If you are not the > intended recipient, you are hereby notified that any disclosure, copying, > distribution or use of this e-mail and/or accompanying document(s) is > strictly prohibited. If you have received this e-mail in error, please > immediately notify the sender at the above e-mail address. >
-- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake