リリース用に C++ プロジェクトを「パッケージ化」する方法を考えています。さまざまなライブラリを使用しており、適切なファイルを適切な場所に配置するなど、ユーザーが私と同じセットアップを行う必要はありません。この問題の専門用語がわからないため、これを調査するのに苦労しました。Linux でコマンド ライン コンパイルを使用している場合、これを行う簡単な方法はありますか?
3 に答える
これに対するアプローチは、Windows と Linux では異なります。これは、OS ごとに異なる方法で処理されるためです。私は Linux の方が詳しいので、回答を Linux 側だけに制限します。
-l フラグを使用して実行可能ファイルをライブラリにリンクすると、リンカはデフォルトで通常のシステム ライブラリ ディレクトリを検索するようになるため、ここには 4 つのアプローチがあります。
ユーザーがライブラリ自体を適切にインストールする必要があります。しかし、あなたはそれをしたくないようです。
ユーザーにライブラリの場所を LD_LIBRARY_PATH 変数に追加してもらいます。
3 番目のオプションは、リンカーに -rpath フラグを使用してライブラリの特定のパスを強制的に検索させることです。たとえば、アプリケーションが作業ディレクトリで共有ライブラリを検索するようにするには、次のようにコンパイルできます。
g++ -rpath ./ -l SomeLib -o MyApp myapp.cpp
もう1つのオプションは、実行可能ファイルを1つだけ配布するだけで済むように、コードをライブラリと静的にリンクすることです。静的ライブラリが存在する場合は、
g++ -static -l SomeLib -o MyApp myapp.cpp
gcc に静的にリンクするように指示するために使用できます。
Windowsでは、wix http://wix.sourceforge.net/を使用して、指摘したい.msiインストーラーを作成することをお勧めします。.dllのルックアップパスは、すべての.dllを.exeと同じフォルダーに配置することをお勧めします。これが最優先です
ただし、vc crt(c / c ++ランタイムライブラリ)は、Microsoftの再配布パッケージを使用してインストールする必要があります->自動的に更新されますhttp://www.microsoft.com/de-de/download/details.aspx?id=5555
Wixは再配布パッケージを同じ.msiに含めることができるため、単一のインストーラーファイルを展開するだけで済みます。
インストラクターのことですか?
Windows では、新しいアプリをインストールするために実行するプログラムによって、すべてが正しいディレクトリに配置され、スタート メニューが作成され、アンインストールできるようになりますか?
Visual Studio には、.msi インストーラー ファイルを作成するインストーラー ビルダーがあります (無料の Express バージョンには含まれていない可能性があります)。単純なタスクにはかなり簡単に使用できますが、それ以上のことを行うには複雑になります。
または、従来の setup.exe タイプのインストールを作成するには、優れた無料のInnosetupを使用します
Linux では、通常、ディストリビューションで使用されている形式 (.deb / .rpm ) を使用してパッケージを作成します。それぞれの詳細については多くの指示があり、そのためのツールはおそらく Linux システムに既にインストールされています。