2011-05-03 68 views
2

我正在使用C++中的簡單命令行工具。一半是有趣的學習過程,一半是分發給朋友/同事等。簡單C++命令行工具的安裝腳本,教程?

我假設讓它可分發的最簡單方法就是用源代碼打包安裝腳本---任何人都可以指向我一個很好的教程來設置它? 換句話說,一個腳本必須包含哪些內容來編譯程序,將這些文件放在適當的位置*,並使其可以從命令行的任何目錄執行?

    • 例如我知道編譯後的二進制文件應該放在/ usr/local/bin /中,但是如果我正在寫入並訪問文本文件(例如),那麼應該去哪裏?那麼存儲設置/配置參數的文件呢?

我在Mac OSX上,所以這將是起點,但便攜性的Windows,Linux等將是巨大的。

+0

最適合Windows的是使用像Innosetup這樣的安裝程序,位於http://www.jrsoftware.org/isinfo.php – 2011-05-03 19:51:21

回答

1

不要假定安裝該程序的用戶具有root用戶訪問權限。提示或提供命令行選項,如--install-prefix =/home/user/apps,以指定安裝位置。

I HATE在/ usr/local中安裝shit的程序。如果你這樣做,你最好把它包裝成.rpm或.deb或任何平臺包,這樣你的應用程序就可以完全卸載了。

我建議檢查出autoconf

+0

我的印象(注意:只有一個印象)是,configure,make等最終只是堅持編譯二進制到usr/local和任何其他文件到他們所屬的任何地方。因爲我的程序非常簡單(幾個文件,幾百行代碼),我認爲所有這些都是不必要的。 這些東西是否可以輕鬆卸載? 你不希望安裝到/ usr/local的東西的動機是什麼? – DilithiumMatrix 2011-05-03 20:07:25

+0

autoconf讓你指定--install-prefix,它爲你的應用程序提供了一個根,它是配置文件。通常,當我部署依賴於定製實用程序的應用程序時,我總是將它們放在一起。這樣我總能看到我添加的依賴關係。如果我遷移到新的主機,我不會錯過任何東西。現在我需要像Puppet或cfEngine這樣的部署平臺來硬編碼這些依賴項,所以也許這只是17年的灌輸和習慣? – 2011-05-03 20:15:51

+0

它自己的autoconf不會執行「打包」卸載。這是一個rpmbuild或任何debian等價物。 – 2011-05-03 20:16:39

2

您可以使用CMake做一個跨平臺的構建系統,你可以使用它的CPackWiki here)功能,以生成二進制包只是。首先,您創建一個構建腳本,在每個平臺上運行並安裝(CMake使其變得儘可能容易)。然後運行CPack生成一個包含你的二進制文件的包。

有一個很好的教程,涵蓋了基本的cmake過程(包括安裝命令)here

CMake通常被認爲更簡單,然後autoconf(並有更好的Windows支持),但每個都有自己的優勢。