我目前正在嘗試在C++中使用luabind庫設置項目。不幸的是,在我的發行版中,即Arch,這個庫不在官方回購站中,而且AUR中的庫已經過時並且未能編譯。C++項目中的外部庫依賴關係
考慮到我只需要這個項目的庫我認爲我可以通過構建庫然後安裝(複製)包含文件和生成的二進制文件到我的項目的2個子目錄中來創建類似於python的virtualenv的沙盒環境分別稱爲include
和lib
,我將在構建時添加到鏈接和包含路徑。我明白爲什麼在您的項目中分發這些庫是不好的:例如,安全性和錯誤修復。然而,分發DLL幾乎是在Windows上普遍完成的(如果我交叉編譯,我可能會這樣做),而Linux上的遊戲等許多項目傾向於打包它們的庫以避免disrtos之間的不一致。此外,如果需要補丁或分叉版本的lib,我懷疑我會在任何官方回購中找到它。
所以我的問題是:
- 高於通常的做法說明了什麼我?我應該這樣做嗎?
- 如果不是,那麼最常見的解決方案是什麼?
注:我使用的CMake的構建自動化,如果它事項
編輯:This question略有礦重疊。
+1 cmake永遠不會得心應手。但是,即使使用ExternalProject模塊,我仍然覺得我正在使用所有庫安裝來污染我的系統。如果我將安裝路徑(庫和頭文件)設置在項目的工作目錄中,可以嗎?(至少對於調試版本,發行版可能會鏈接到系統庫(如果可用或包含它們) – nikitautiu
是的,這就是它的原因應該工作。安裝目錄應位於CMAKE_BINARY_DIR下。整個過程假定沒有系統範圍的修改。 – SirDarius