路径的 CMake 命令是相等的

Ide*_*Hat 3 c++ cmake

是否有 CMake 命令在且仅当两个路径指向同一位置时返回 true(即使路径不是逐字相等的字符串)?

就像是

set(x ../foo)
set(y C:/cmaketest/foo)
if (x PATHEQUAL y)
{
   message(status "YAY")
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*nch 6

这应该主要工作。它似乎没有考虑的一种情况是不区分大小写的文件系统(这包括 OS X 和 Windows 上的默认文件系统,但不包括 Linux)。

get_filename_component(x ./foo.txt   ABSOLUTE)
get_filename_component(y ././foo.txt ABSOLUTE)

if (x STREQUAL y)
    message(STATUS "Strings are Equal")
else()
    message(STATUS "Strings are Not Equal")
endif()
Run Code Online (Sandbox Code Playgroud)

这输出:

[11:55am][wlynch@watermelon blah] touch foo.txt
[11:55am][wlynch@watermelon blah] cmake . |& head -n 1
-- Strings are Equal
Run Code Online (Sandbox Code Playgroud)