2016-10-26 39 views
0

我想要更好地瞭解CMake和澆注在文檔中以便將gRPC移植到窗口,而真正嘮叨我的一件事是如何區分字符串輸入來自文檔中的變量輸入。例如,從CMake獲取LINK_DIRECTORIES命令。它需要任意數量的目錄,但單獨閱讀文檔,我不清楚我是否可以將字符串變量傳遞給LINK_DIRECTORIES,字符串或任何一個。CMake:讀取文檔和區分字符串輸入從var

例如: 如果set(DIR, "/lib");設置,以下哪些是有效的:

1號

set(DIR, "/lib"); 
link_directories(DIR) 

2號

link_directories(${DIR}) 

好像LINK_DIRECTORIES採取的字符串,而不是變量(多個)。我通過編碼和運行發現了這種情況,但這樣做會大大減慢我的進度,因爲我必須對每行進行一次完整性檢查。我的理解錯過了什麼?

回答

0

在CMake的documentation,如果參數的是「變」,「列表」或含有單詞「變量」,那麼你應該通過這個參數傳遞變量的名。

實例:

  1. 命令set具有簽名

    set(<variable> <value> 
        [[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE]) 
    

    接受變量名作爲第一個參數。

  2. 具有簽名

    list(LENGTH <list> <output variable>) 
    

    命令流程list(LENGTH)接受變量名作爲第一個參數(和該變量被解釋爲列表)。

  3. 具有簽名

    string(REGEX MATCH <regular_expression> 
        <output variable> <input> [<input>...]) 
    

    命令流程string(REGEX MATCH)接受變量名作爲fouth參數。

在所有其他情況下的說法只是一個。所以,如果你想傳遞變量的值,你需要明確地使用${}表示取消引用這個變量。