我試圖將我們的構建系統轉換爲cmake,並且遇到了它生成的RPM(通過cpack)的一個有趣問題:它會自動將它認爲您的RPM具有的所有依賴關係添加到其列表中需要的庫。你如何做到這一點,使cpack不會將所需的庫添加到RPM?
一般來說,這很好,但在我的情況下,這是災難性的。不幸的是,我們構建的開發包最終使用一個我們自己開發的工具進行安裝,該工具使用rpm將它們安裝在與系統分開的RPM數據庫中。這很愚蠢,但我無法改變它。這意味着任何普通庫所依賴的所有系統庫(如libc或libpthread)都不在我們的開發包中使用的RPM數據庫中。因此,如果我們的某個開發包的RPM列出了需要的系統庫,那麼我們無法安裝它,因爲rpm會認爲它們沒有安裝(因爲它們是在正常數據庫中列出的,而不是一個它被告知在安裝我們的軟件包時使用)。我們當前的構建工具可以很好地處理這個問題,因爲它沒有將任何系統庫列爲RPM中的依賴項,但cpack會自動填充RPM所需庫的列表,並將系統庫放入其中。我需要一種方法來阻止它這樣做。
我嘗試將CPACK_RPM_PACKAGE_REQUIRES
設置爲""
,但這沒有效果。 RPM cpack生成的最終還是系統庫列爲必需的。我現在所能想到的就是複製RPM cpack生成器,並將其破解並做出我想要的,然後用它來代替標準的,但我寧願避免這種情況。有沒有人有任何想法如何讓cpack停止使用所需的庫來填充RPM?
這聽起來像我需要設置,但問題是如何使用cmake和cpack來做到這一點? –
好的。你的答案並沒有給我所需要的所有信息,但是足夠了解如何解決這個問題,所以我更新了答案,包含了關於如何使用cmake設置'AutoReqProv'的說明。 –