現在、オープンソースの C++ プロジェクトに取り組んでいます。
これにより、多くのことが簡素化されます。プロジェクトにビルド スクリプトを提供し、さまざまなユース ケースでそれらをサポートする必要があります (Makefile について学びます。「ターゲット」のような同様の概念があります)。
私の日常の仕事は主に Java に関係しているため、C++ の経験はあまりありません。
Java で使い慣れている (そして今求められている) もののほとんどは、C/C++ に欠けているために発明されたものです。動的(共有)/静的ライブラリ(単純にするために.soおよび.aファイル)について少なくとも何かを学びます。
現在、C++ プロジェクトのリリースを計画していますが、プロジェクトのパッケージをどのように配置すればよいか知りたいです。
「C++ プロジェクトのパッケージ化」は非公式なものです。よく知られている IDE のソース、ビルド スクリプト、およびいくつかのプロジェクト ファイルを提供することができます。
編集:コマンドラインアプリケーションを構築していることを指定しました。必要なのは、そのアプリケーション用の単純な Makfile から始めることだけだと思います。参照 Makefile は、Eclipse によって自動的に生成されます。アプリケーションをスタンドアロン ソフトウェアとして展開する予定の場合は、パッケージング (rpm、deb、tgz) について稼ぐ必要があります。
たとえば、Java では、すべてのクラス ファイルが jar ファイルにパッケージ化されます。
C++クラス(ABI)をエンコードするためのバイナリ標準がないため、コンパイラ間で互換性のあるC++「パッケージ」などはありません(最新のC++11標準では「モジュール」でさえ拒否されました)。Linux では、GCC (または Intel のコンパイラ、または LLVM の CLang、または OpenWatcom のカスタム ビルドなど) を使用する可能性が最も高いですが、リンクしている標準ライブラリのバージョンでは、バイナリ ビルドのリリースがほとんど役に立たなくなります。 . それがソースコードを再配布する理由です。
では、C++ での同等のアプローチは何ですか?
ここには明確な答えはありません。
ソースコード/バイナリを整理するための良い方法はありますか?
大規模なプロジェクトを見て、ビルドを整理する方法を見てください。職業としての「ビルドエンジニア」という用語は、大規模なプロジェクトのコンパイル/リンクの難しさを強調しています。
ちなみに、私のターゲット プラットフォームは Linux です。
これも不完全な説明です。「Linux」はあいまいな用語です。Linux ディストリビューション、コンパイラ ツールチェーン、およびパッケージ マネージャについて説明する必要があります。例: Ubuntu 12、amd64、GCC 4.6 ツールチェーン、APT パッケージ マネージャー。
同じカーネルソースを中心に構築されたさまざまな「Linux」があります。さまざまなコンパイラがあります。Debian/Ubuntu(deb,apt)、Red Hat(rpm)、Slackware(tgz) の 3 つの主要なパッケージ マネージャーを検討する必要があります。
もう 1 つの質問は、現在、開発とビルドに Eclipse CDT プラグインを使用していることです。とにかく、Eclipseプロジェクトからビルドスクリプトを抽出できますか
一種の「メタテクニック」があります。プロジェクトの「説明」を書くと、ツールがプロジェクト ファイルとソースのビルド スクリプトを生成します。CMakeを見てください。「linux」を使用しているので、autotools (autoconf) のやや標準的な方法を調べてみてください。
C++ のビルド/パッケージングに関する参考文献はありますか?
アプリケーションを構築することから始めてから、展開の問題に進む必要があります。C/C++ は、Java では回避されている多くの微妙な点を伴う、習得が難しい遺産です。