C++构建过程
C++ Build Process
我目前正在开发一个开源C++项目。我在C++方面没有太多经验,因为我的日常工作主要涉及Java。我现在正计划发布我的C++项目,我想知道我应该如何安排我的项目的打包。例如,在Java中,所有的类文件都打包到jar文件中。那么,C++中的等效方法是什么呢?组织源代码/二进制代码有什么好的做法吗?顺便说一下,我的目标平台是Linux。
另一个问题是,我目前正在使用EclipseCDT插件进行开发和构建。那么,我是否可以从Eclipse项目中提取构建脚本并将其用作通用构建脚本呢?关于C++构建/打包,有什么好的参考资料吗?提前谢谢。
已编辑
为了进一步澄清,我认为我的项目的发布可以被视为一个应用程序。它是一个用于软件配置管理的命令行工具。
我目前正在进行一个开源C++项目。
这简化了许多事情。您应该为您的项目提供构建脚本,并为不同的用例提供支持(了解Makefiles,有类似的概念,如"target")。
我在C++方面没有太多经验,因为我的日常工作主要涉及Java。
你过去在Java中拥有(现在也要求)的大多数东西都是因为C/C++中缺少而发明的。至少了解一些动态(共享)/静态库(.so和.a文件要简单一些)。
我现在正计划发布我的C++项目,我想知道我应该如何安排我的项目的打包。
"C++项目的打包"是一种非正式的东西。您可以为知名的IDE提供源代码、构建脚本和一些项目文件。
EDIT:您已经指定正在构建命令行应用程序。我相信您所需要的只是从一个简单的应用程序Makfile开始。引用Makefile可以由Eclipse自动生成。如果您计划将应用程序部署为一个独立的软件,那么您必须了解打包(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软件包管理器。
围绕同一内核源代码构建了不同的"linux"。有不同的编译器。至少有三个主要的软件包管理器需要考虑:Debian/Uubuntu(deb,apt),Red Hat(rpm),Slackware(tgz)。
另一个问题是,我目前正在使用EclipseCDT插件进行开发和构建。那么,我是否可以从Eclipse项目中提取构建脚本
有一种"元技术":你写一个项目的"描述",然后一个工具生成项目文件并为你的源代码构建脚本。看看CMake。既然您使用的是"linux",请尝试一下autotools(autoconf)的标准方式。
关于C++构建/打包,有什么好的参考资料吗?
您应该先构建应用程序,然后再讨论部署问题。C/C++是一个很难学习的遗留问题,它有很多在Java中避免的微妙之处。
- 下一个云桌面客户端构建过程
- cmake在构建过程中使用另一个工具检测标志
- 尝试在 AIX 6.1 上创建构建过程
- C++构建过程 - lib 依赖项
- 在构建过程中捕获所有编译器调用和命令行参数
- MSVC2013:如何避免在错误地使用预构建脚本中止构建过程(错误MSB3073:VCEnd"退出,代码为 -1)
- 如何在节点GYP构建过程中包括Tesseract库
- 如何使用CMAKE在项目构建过程中构建SDL2
- 找不到构造函数 - 如何将 CPP 文件添加到 Qt 构建过程
- 在Docker构建过程中安装C 软件包
- 在构建过程中更改Boost库的路径
- 为什么Qt Creator找到typedef,而不是构建过程
- 应用程序停滞在构建/运行过程中
- Emacs在Windows7上构建过程
- C++构建过程
- scons - 在编译过程后删除一些构建的文件
- 在构建过程中捕获特定基础成员的异常
- 在构建过程中构建第三方库
- Ros安装在构建过程中卡住
- Visual Studio -如何自动化构建过程