2012-03-21 25 views
5

我想獲取已設置爲路徑元素組合(可能包括絕對和相對)的變量並從中獲取絕對路徑。類似於boost::filesystem::system_complete()在C++中所做的。例如,我有這樣的:CMake:獲取路徑的完整表示形式減去相對元素

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

其工作,但在UI這是一個有點難看,因爲它最終可能會看起來像C:/dev/repo/tool/../external。我想知道是否有一個CMake內置命令在我去之前將其轉化爲C:/dev/repo/external,並編寫腳本宏來執行此操作。 find_path這種做法,但它要求路徑已經存在,並且需要尋找一些東西。我希望它能夠工作,無論路徑是否存在(例如,我可能會將其用於重寫CMAKE_INSTALL_PREFIX默認值)。

回答

14

您可以使用:

get_filename_component(NEW_VAR ${EXTERNAL_LIB_DIR} REALPATH) 
+0

完美,謝謝。 – 2012-03-21 19:13:48