2012-07-19 43 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中避免了许多微妙之处。