3
是否有CMake命令返回true當且僅當兩個路徑指向相同的地方(即使路徑不是逐字相等的字符串)?路徑CMake命令是相等的
喜歡的東西
set(x ../foo)
set(y C:/cmaketest/foo)
if (x PATHEQUAL y)
{
message(status "YAY")
}
是否有CMake命令返回true當且僅當兩個路徑指向相同的地方(即使路徑不是逐字相等的字符串)?路徑CMake命令是相等的
喜歡的東西
set(x ../foo)
set(y C:/cmaketest/foo)
if (x PATHEQUAL y)
{
message(status "YAY")
}
這應該基本能工作。它似乎沒有考慮到的一個案例是不區分大小寫的文件系統(這包括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()
此輸出:
[11:55am][[email protected] blah] touch foo.txt
[11:55am][[email protected] blah] cmake . |& head -n 1
-- Strings are Equal
http://www.cmake.org/pipermail/cmake/2009-July/030672.html –
@sharth我假設你說這兩個值轉換到絕對路徑使用此方法,然後可能還將它們轉換爲cmake路徑,然後比較字符串等於之後,這工作,但似乎很多工作比它應該是...我想知道是否有一個內置的,命令。 – IdeaHat
我已將該網址擴展爲完整答案。如果這不是你想要的,請告訴我。 –