2016-03-15 40 views
1

假設我有這樣的:如何在函數中獲取當前包含的cmake文件的路徑?

#root/CMakeLists.txt 
include(folder/file.cmake) 
foo() 

#root/folder/file.cmake 
function(foo) 
    message(${SOME_SPECIAL_CMAKE_VARIABLE}) 
endfunction() 

我想path/to/root/folder打印。 我試過這兩個,但他們沒有得到我想要的:CMAKE_CURRENT_LIST_DIRCMAKE_CURRENT_SOURCE_DIR

那麼是否有一個cmake變量可以讓我得到我想要的?

或者有沒有辦法讓file.cmake的完整路徑,所以我可以至少得到它的路徑?

+1

爲什麼'CMAKE_CURRENT_LIST_DIR'不適合您的需求?對於足夠新鮮的CMake(> = 2.8.3),它包含所需的信息。 – user3159253

+0

@ user3159253 hmmm在'''file.cmake'''裏面實際使用它的函數返回了錯誤的結果 - 但是當我打印它時就像我在這裏所說的那樣工作正常。所以也許我應該在第一次包含'''file.cmake''時將它緩存在某個變量中,然後使用函數中的緩存值? – onqtam

+1

@onqtam你應該真的[編輯]這個問題,以清楚你指的是「在一個文件中定義的函數內」而不是「在一個文件內」。他們是完全不同的東西。無論如何,將該值存儲在一個變量中,並且使用它幾乎就是CMake自己在自己的構建設置中所做的。 – Angew

回答

1

我最終緩存了CMAKE_CURRENT_LIST_DIR變量,當文件被包含在函數之外,後來我在函數內部使用了緩存值 - 基於我的問題的評論。

相關問題