是否有 CMake 命令在且仅当两个路径指向同一位置时返回 true(即使路径不是逐字相等的字符串)?
就像是
set(x ../foo)
set(y C:/cmaketest/foo)
if (x PATHEQUAL y)
{
message(status "YAY")
}
Run Code Online (Sandbox Code Playgroud)
这应该主要工作。它似乎没有考虑的一种情况是不区分大小写的文件系统(这包括 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)