我目前正在開發C++項目。
這簡化了很多事情。您應該爲您提供構建腳本項目併爲不同的用例提供支持(瞭解Makefiles,也有類似的概念,比如「target」)。
我沒有太多的C++經驗,因爲我的日常工作主要涉及Java。
因爲在C/C++中缺乏,所以您習慣於在Java中使用(並且現在要求)的大部分內容都被髮明出來。至少學習一些關於動態(共享)/靜態庫(.so和.a文件很簡單)的內容。
我現在正計劃發佈我的C++項目,我想知道應該如何安排我的項目的包裝。
「C++項目的包裝」是非正式的。您可以爲知名的IDE提供源代碼,構建腳本和一些項目文件。
編輯:你已經指定你正在構建命令行應用程序。我相信你所需要的只是從一個簡單的Mak文件開始。 Eclipse的參考Makefile可以自動生成。如果您打算將應用程序部署爲獨立軟件,那麼您必須獲得有關打包(rpm,deb,tgz)的信息。
例如,在Java中,所有的類文件都打包成jar文件。
有沒有這樣的東西作爲一個C++「包」兼容翻過編譯器(甚至「模塊」在最新的C++ 11標準被拒絕) 因爲沒有二進制標準來編碼的C++類(ABI )。在linux上,你最有可能使用GCC(或者英特爾的編譯器,或者LLVM的CLang,或者定製的OpenWatcom或者......),但是你鏈接的標準庫的版本使得二進制版本的版本接近於無用。 這就是重新分析源代碼的原因。
那麼C++中的等價方法是什麼?
這裏沒有明確的答案。
組織源代碼/二進制文件有什麼好的做法嗎?
看看大型項目,看看他們組織他們的構建的方式。 「建築工程師」這個詞作爲職業強調大規模項目編制/鏈接的困難。
我的目標平臺是Linux。
這也是一個不完整的描述。 「Linux」是一個模糊的術語。你應該談論Linux發行版,編譯器工具鏈和包管理器。例如,Ubuntu 12,amd64,GCC 4.6工具鏈,APT包管理器。
圍繞相同的內核源碼構建了不同的「linuxes」。有不同的編譯器。至少有三個主要的軟件包管理者需要考慮:Debian/Ubuntu(deb,apt),Red Hat(rpm),Slackware(tgz)。
另一個問題是我目前使用Eclipse CDT插件進行開發和構建。所以,反正是有,我可以從Eclipse項目中提取生成腳本
有一種「元技術」:你寫你的項目的「說明」,然後在工具生成項目文件和構建腳本爲您的來源。看看CMake。既然你是在「linux」上,試着看一下autotools(autoconf)的標準方式。
有沒有關於C++構建/包裝的很好的參考?
您應該從構建應用程序開始,然後轉到部署問題。 C/C++是一個很難學習的遺產,它在Java中避免了許多微妙之處。
要回答,我們需要更多地瞭解您的項目。例如,它是(動態還是共享)庫還是應用程序/應用程序?或者你是否只是想讓你的代碼可供其他人自己創建? – Turix 2012-07-19 05:53:10
@Turix謝謝。我添加了更多的細節。請讓我知道,如果這個問題仍然不明確。 – 2012-07-19 06:00:48
不是重複的,但也許有用:http://stackoverflow.com/questions/54674/any-good-building-tools-for-ac-project-which-can-replace-make – jogojapan 2012-07-19 06:11:30