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

Reply via email to