我使用一些我不想構建的庫,作爲使用它們的每個項目的一部分。一個非常容易理解的例子是LLVM,它有78個靜態庫。即使有cmake代碼在每個cmake文件中查找和導入這些代碼都是過度的。對於cmake「include」命令,文件和模塊有什麼區別?
顯而易見的解決方案似乎是使用「include」命令,並將相關的cmake腳本塊分解爲* .cmake文件,並設置CMAKE_MODULE_PATH環境變量。
除了它只是普通不起作用。 Cmake沒有找到我在include命令中指定的文件。
就機會而言,我甚至試圖用幾種方式指定環境變量中的路徑 - 一次是反斜線,一次是正斜槓......並且我每次都重新啓動命令提示符並檢查環境變量是目前和正確。
在cmake手冊中,它意味着「文件」與「模塊」不同 - 只有一個模塊獲得自動添加擴展和搜索路徑處理。但是沒有解釋有什麼不同。我猜想,缺少的擴展可能已經足夠了(與標準模塊一樣),但顯然不是。
在該手冊中搜索「模塊」沒有太大的幫助,因爲這個詞似乎被重載。例如,一個模塊也是一個使用LoadLibrary/dl_open加載的動態庫。
任何人都可以解釋在這種情況下文件和模塊之間有什麼區別,以及如何創建我自己的模塊,以便cmake include命令可以找到並使用它?
我在Windows上使用cmake 2.8.1。
編輯
我很有信心,這裏的問題是不理解的cmake是如何工作的。我認爲應該正在做的是寫find_package
可以使用的東西。
雖然事實證明,我仍然有些不能回答我自己的問題。
現在回頭看看這段代碼,我注意到我沒有追加到'CMAKE_MODULE_PATH';我完全打破了它。你可能想要做更多的事情:'set(CMAKE_MODULE_PATH「$ {CMAKE_MODULE_PATH}; $ {CMAKE_CURRENT_SOURCE_DIR}/cmake」)' – 2010-07-16 01:16:45
我現在沒有時間檢查,但這看起來不錯。謝謝。 – Steve314 2010-07-16 08:09:32
我不知道爲什麼我現在認爲變量是一個環境變量。我想,看看我在找什麼,而不是在那裏。我最近剛剛在YouTube上觀看了Google的techtalk視頻,並指出環境變量大多是故意避免的。無論如何 - 接受和感謝。 – Steve314 2010-07-17 03:11:03