2014-03-13 65 views
3

是否有CMake命令返回true當且僅當兩個路徑指向相同的地方(即使路徑不是逐字相等的字符串)?路徑CMake命令是相等的

喜歡的東西

set(x ../foo) 
set(y C:/cmaketest/foo) 
if (x PATHEQUAL y) 
{ 
    message(status "YAY") 
} 
+1

http://www.cmake.org/pipermail/cmake/2009-July/030672.html –

+0

@sharth我假設你說這兩個值轉換到絕對路徑使用此方法,然後可能還將它們轉換爲cmake路徑,然後比較字符串等於之後,這工作,但似乎很多工作比它應該是...我想知道是否有一個內置的,命令。 – IdeaHat

+0

我已將該網址擴展爲完整答案。如果這不是你想要的,請告訴我。 –

回答

4

這應該基本能工作。它似乎沒有考慮到的一個案例是不區分大小寫的文件系統(這包括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