2012-03-21 7 views
5

Bir yol öğeleri (potansiyel olarak hem mutlak hem de göreceli) birleşimi olarak ayarlanmış bir değişken almak ve ondan mutlak yol almak istiyorum. boost::filesystem::system_complete()'un C++ içinde yaptığı gibi bir şey. çalışır ancak C:/dev/repo/tool/../external benzeyen sonunda olabilir arayüzünde Bu biraz çirkinCMake: Bir yolun eksi göreli öğelerinin tam temsilini alın

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

: Örneğin, şöyle bir şey var. Ben gitmek ve bir makro bunu yapmak için komut dosyası önce C:/dev/repo/external içine çevirmek için yerleşik bir CMake yerleşik bir komut olup olmadığını merak ediyorum. find_path bunun bir türü, ancak zaten var olan yolu ve aramaya değer bir şey olmasını gerektirir. Yolun mevcut olup olmadığını çalışmasını istiyorum (örneğin, varsayılan olarak CMAKE_INSTALL_PREFIX geçersiz kılma için kullanabilirim).

cevap

14

Sen kullanabilirsiniz:

get_filename_component(NEW_VAR ${EXTERNAL_LIB_DIR} REALPATH) 
+0

Mükemmel, teşekkür ederim. –