2012-07-19 42 views
4

我目前正在開發C++項目。我在C++方面沒有太多經驗,因爲我的日常工作主要涉及Java。我現在計劃發佈我的C++項目,我想知道我應該如何安排項目的包裝。例如,在Java中,所有的類文件都打包成jar文件。那麼C++中的等效方法是什麼?組織源代碼/二進制文件有什麼好的做法嗎?順便說一句,我的目標平臺是Linux。C++構建過程

另一個問題是我目前使用Eclipse CDT插件進行開發和構建。那麼無論如何,我可以從Eclipse項目中提取構建腳本並將其用作通用構建腳本?有沒有關於C++構建/包裝的很好的參考?提前致謝。


編輯

爲了澄清多一點,我覺得我的項目的發佈可以看作是一個應用程序。它是用於軟件配置管理的命令行工具。

+1

要回答,我們需要更多地瞭解您的項目。例如,它是(動態還是共享)庫還是應用程序/應用程序?或者你是否只是想讓你的代碼可供其他人自己創建? – Turix 2012-07-19 05:53:10

+0

@Turix謝謝。我添加了更多的細節。請讓我知道,如果這個問題仍然不明確。 – 2012-07-19 06:00:48

+1

不是重複的,但也許有用:http://stackoverflow.com/questions/54674/any-good-building-tools-for-ac-project-which-can-replace-make – jogojapan 2012-07-19 06:11:30

回答

5

我目前正在開發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中避免了許多微妙之處。