CMake:获取路径的完整表示减去相对元素

Mik*_*e E 5 cmake

我想将一个已设置为路径元素组合的变量(可能是绝对路径和相对路径)并从中获取绝对路径.像boost::filesystem::system_complete()C++中的东西.例如,我有类似的东西:

set(EXTERNAL_LIB_DIR "${CMAKE_SOURCE_DIR}/../external" CACHE PATH "Location of externals")
Run Code Online (Sandbox Code Playgroud)

哪个有效,但在UI中它有点难看,因为它可能最终看起来像C:/dev/repo/tool/../external.我想知道是否有一个CMake内置命令将其转换为C:/dev/repo/external我去之前脚本宏来执行它.find_path有点这样做,但它要求路径已经存在,值得寻找的东西在那里.无论路径是否存在,我都希望它能够工作(例如,我可能会将它用于覆盖的CMAKE_INSTALL_PREFIX默认路径).

tib*_*bur 14

您可以使用:

get_filename_component(NEW_VAR ${EXTERNAL_LIB_DIR} REALPATH)
Run Code Online (Sandbox Code Playgroud)