自從我在C++
工作多年以來,我從未使用過CMake
。我試圖編譯一個名爲ngmlr的程序,它使用CMake
。它在我試圖建立它的其他系統上無縫地工作。這一次,CMake
找到ZLIB
(Found ZLIB: /usr/lib64/libz.so (found version "1.2.3")
),按照ngmlr
的要求,但隨後的make
因ld: cannot find -lz
而失敗。CMake是否需要靜態庫(例如ZLIB)?
我認爲我知道發生了什麼:CMake
發現動態ZLIB
庫(libz.so
),但CMakeLists.txt
文件需要static
(我發現文件中的下列選項:option(STATIC "Build static binary" ON)
)。據我所知,這臺機器上缺少靜態庫(libz.a
)。它不在與libz.so
相同的/usr/lib64
目錄中。 locate
不可用。
問題:
- 不似乎正確的嗎?
- 對於教育,假設這是問題,你能強制
CMake
專門尋找static
ZLIB
?例如,由於開發人員需要static
,所以很快就會很高興立即知道缺失的static
庫是問題所在,而不是我花費很長時間才弄明白的。
我已經廣泛地尋找了兩個明確的答案,但沒有發現任何結論性的(例如,Force cmake to use static libraries)。
UPDATE 我沒有確認問題是ld
找不到靜態庫。現在我特別想知道如果static
庫不存在,開發人員是否可以告知CMake
發生錯誤,並保存其他人。
cmake version 2.8.8
我很感激我如何能提高我的問題的任何反饋您的項目應該被拋出。 –