On 5/9/2014 11:58 AM, David Cole wrote:
If you use get_filename_component in conjunction with paths that contain
".." or Windows-style component separators ("\"), you can always clean
up the resulting string with the "ABSOLUTE" argument to
get_filename_component. It will collapse any "/../" or "/./" bits of the
path, and convert all the "\" to "/" in the resulting variable.
It's just easier to read the values (as a person) if you don't have to
think about any ".." resolution mentally when looking at cache entries
and variable values. So.... as input to find_*, I would recommend using
only ABSOLUTE paths as the hints and paths for such calls.
Thanks David, but my cache entry for MY_VCVARSALL_BAT looks fine
already, having done the following:
get_filename_component(MY_COMPILER_DIR
${CMAKE_CXX_COMPILER} DIRECTORY)
find_file(MY_VCVARSALL_BAT vcvarsall.bat
${MY_COMPILER_DIR}/.." "${MY_COMPILER_DIR}/../..")
My CMakeCache.txt says:
//Path to a file.
MY_VCVARSALL_BAT:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio
12.0/VC/vcvarsall.bat
So any ".." has been resolved automatically by find_file, even without
explicitly specifying "ABSOLUTE" :-)
Was your idea to add the following line?
get_filename_component(MY_VCVARSALL_BAT ${MY_VCVARSALL_BAT} ABSOLUTE)
Again, it does not seem to make a difference in this case. Right?
Kind regards, Niels
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake