2013-04-10 92 views
0

我在cmake中使用get_filename_component來獲取變量中給定的可能相對路徑的絕對路徑。如何更改cmake中get_filename_component的引用路徑?

我想做一個out-of-tree/out-of-source-build。

在我看來,get_filename_component使用CMAKE_SOURCE_DIR作爲參考路徑。

有沒有辦法改變它或解決它呢?

我試過的一種方法是用${CMAKE_BINARY_DIR}作爲我的潛在相對路徑的前綴,但是停止工作的路徑並不是相對的。

回答

2

假設你的相對路徑是總是相對於CMAKE_BINARY_DIR,那麼你可以處理這個很容易地使用if(IS_ABSOLUTE ...)

if(NOT IS_ABSOLUTE ${MyPath}) 
    set(MyAbsPath ${CMAKE_BINARY_DIR}/${MyPath}) 
endif() 

如果該對象文件或目錄存在於CMake的運行時間,那麼你可以隨時做呼叫find_file,通過可能的NAMESPATHS。如果文件存在並被找到,則結果變量將保存文件的完整路徑。

或者您可以使用ifif(EXISTS ...)簽名來檢查給定文件是否存在。