2013-03-13 45 views
0

請檢查以下之情況:cmake_current_source_dir

cmakelists_1.txt

set(variable_name 
    ${CMAKE_CURRENT_SOURCE_DIR}/sub_folder1 
    ${CMAKE_CURRENT_SOURCE_DIR}/sub_folder2 
    ) 

cmakelists_2.txt

include_directories(
    ${variable_name} 
) 

時cmakelists_2執行不包括存在於sub_folders的文件現在。但是,如果我爲cmakelists_1中的子文件夾提供絕對路徑,它就可以工作。

請指點我是否缺少一些東西。

回答

0

CMAKE_CURRENT_SOURCE_DIR始終是提及它的CMakeLists.txt所在的當前源目錄。所以它根據使用哪個目錄擴展到不同的東西。它是什麼擴展到你,和你的硬編碼路徑有什麼不同?一旦你看到的差別,你就會知道如何解決它,所以在這兩個文件:

message(${variable_name}) 

然後重新運行cmake,看看它打印。

+0

謝謝約翰,你的差異,但你能解釋什麼是標準/ genralized方式來解決這個問題,因爲我不想硬編碼的路徑。 – Priyank 2013-03-13 04:47:49

+0

那麼你可以使用基於PROJECT_SOURCE_DIR的東西,而不會改變。 – 2013-03-13 05:17:26

+0

或者,如果您需要訪問不同的項目目錄,請使用'ProjectName_SOURCE_DIR'。 – Angew 2013-03-13 07:15:27

相關問題