[CMake] How to find vcvarsall.bat (e.g. at "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC")? CMAKE_LINKER?
Niels Dekker - address until 2018
niels_dekker_address_until_2018 at xs4all.nl
Fri May 9 16:03:45 EDT 2014
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
More information about the CMake
mailing list