2017-12-27 297 views
0

我將一個項目移植到CMake,並努力尋找如何設置標頭搜索路徑(以前使用編譯器標誌設置,例如-I "../../Source")。CMake和標頭搜索路徑

我目前有:

target_include_directories (jni-bridge PRIVATE 
    "../../Analysis" 
    "../../Source" 
) 

但是,這是行不通的。我應該如何設置路徑,以及它們相對於哪個位置?

+0

爲什麼不在高級CMakeLists.txt的搜索路徑中添加這些目錄?如果這些不是當前CMake項目的一部分,那麼最好使用一些CMake變量添加這些目錄,以使項目具有可移植性。 –

回答

0

在內部,CMake使用絕對路徑作爲包括目錄。如果相對路徑與target_include_directories一起使用,則將相對於當前源目錄${CMAKE_CURRENT_SOURCE_DIR})進行解釋。


上面時發生器表達式不使用是真實的。

生成器表達式$<INSTALL_INTERFACE:..>可能(並強烈建議)使用相對於安裝前綴解釋的相對路徑。

發生器表達式$<BUILD_INTERFACE:...>應該使用絕對路徑。