你的問題真的是關於依賴管理。無關.lib或.dll,這些只是不同種類的依賴關係。你的問題是,如果有人克隆我的存儲庫,他們如何構建它?
答案是你需要一個構建腳本,makefile文件,Rake文件,傑克文件,等等的東西,用戶可以運行做構建。例如,這可以是一個自述文件,它說:「去網站X下載你需要的文件」。或者,您可以按照您的建議在您的存儲庫中添加必要的依賴關係。在法律上,這並不總是被允許的,因爲它被認爲是「再分配」。最好的方法是使用某種依賴性管理。根據您使用的語言,有不同的依賴管理解決方案。我建議只使用公共依賴庫中的庫(.dll,.lib,.tar,。*)。
在Java中,推薦的方法是使用稱爲maven的東西。 Ruby有gem,node.js有npm包。這只不過是一個具有依賴關係列表的文件,以及一個知道如何檢索它們的工具。要構建我的庫,就像運行 npm install && node make.js
那樣簡單,它說運行nodejs程序包管理器(依賴管理器)下載所有必需的文件,然後運行構建腳本。
對於C++來說,它可能類似於make install && make
,它需要一個makefile來配置,說這些是在構建項目之前需要發生的事情。
個人C++的依賴管理很差,但可能會產生一些負面的反應,我只會說C/C++中的依賴管理不是我的最愛,對於大多數內部軟件或小型應用程序,我仍然會提交lib和你的代碼。如果存在包含lib文件的公共存儲庫,則在調用gcc編譯器之前,始終可以生成一個作爲構建過程的一部分的makefile/Cmake至curl
或wget
。
您的問題標題是關於部署。你的問題主體是關於上傳東西給github。它是什麼?部署或源代碼管理? –
「如果我不這樣做,這意味着下載我的源代碼的人將不得不去找相應的.lib文件來鏈接和編譯對不對?」如果他們正在編譯代碼,他們可以爲自己獲取庫(例如通過他們環境的包管理器),並編譯或鏈接到庫,作爲其構建過程的一部分。分發別人的圖書館不是你的責任。 –
不完全如此。的確,您在運行時不需要lib,但是您可以使用.lib來描述在運行時需要的DLL。 lib可能只包含DLL的鏈接信息,而不是庫本身。 – user4581301