2012-03-21 8 views
5

Quiero tomar una variable que se ha configurado en una combinación de elementos de ruta (potencialmente tanto absoluta como relativa) y obtener la ruta absoluta de la misma. Algo como lo que boost::filesystem::system_complete() hace en C++. Por ejemplo, tengo algo como:CMake: Obtener la representación completa de una ruta menos elementos relativos

set(EXTERNAL_LIB_DIR "${CMAKE_SOURCE_DIR}/../external" CACHE PATH "Location of externals") 

que funciona pero en la interfaz de usuario que es un poco feo, ya que podría terminar pareciéndose a C:/dev/repo/tool/../external. Me pregunto si hay un comando incorporado CMake para convertirlo en C:/dev/repo/external antes de ir y crear una macro para hacerlo. find_path tipo de esto, pero requiere que la ruta ya exista y que valga la pena buscarla. Quiero que funcione si la ruta existe o no (podría usarla para un valor predeterminado CMAKE_INSTALL_PREFIX por defecto, por ejemplo).

Respuesta

14

que puede utilizar:

get_filename_component(NEW_VAR ${EXTERNAL_LIB_DIR} REALPATH) 
+0

perfecto, gracias. –

Cuestiones relacionadas