7

リリース用に C++ プロジェクトを「パッケージ化」する方法を考えています。さまざまなライブラリを使用しており、適切なファイルを適切な場所に配置するなど、ユーザーが私と同じセットアップを行う必要はありません。この問題の専門用語がわからないため、これを調査するのに苦労しました。Linux でコマンド ライン コンパイルを使用している場合、これを行う簡単な方法はありますか?

4

3 に答える 3

5

これに対するアプローチは、Windows と Linux では異なります。これは、OS ごとに異なる方法で処理されるためです。私は Linux の方が詳しいので、回答を Linux 側だけに制限します。

-l フラグを使用して実行可能ファイルをライブラリにリンクすると、リンカはデフォルトで通常のシステム ライブラリ ディレクトリを検索するようになるため、ここには 4 つのアプローチがあります。

  1. ユーザーがライブラリ自体を適切にインストールする必要があります。しかし、あなたはそれをしたくないようです。

  2. ユーザーにライブラリの場所を LD_LIBRARY_PATH 変数に追加してもらいます。

  3. 3 番目のオプションは、リンカーに -rpath フラグを使用してライブラリの特定のパスを強制的に検索させることです。たとえば、アプリケーションが作業ディレクトリで共有ライブラリを検索するようにするには、次のようにコンパイルできます。g++ -rpath ./ -l SomeLib -o MyApp myapp.cpp

  4. もう1つのオプションは、実行可能ファイルを1つだけ配布するだけで済むように、コードをライブラリと静的にリンクすることです。静的ライブラリが存在する場合は、g++ -static -l SomeLib -o MyApp myapp.cppgcc に静的にリンクするように指示するために使用できます。

于 2012-06-08T16:14:28.713 に答える
2

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に含めることができるため、単一のインストーラーファイルを展開するだけで済みます。

于 2012-06-08T18:44:14.017 に答える
1

インストラクターのことですか?
Windows では、新しいアプリをインストールするために実行するプログラムによって、すべてが正しいディレクトリに配置され、スタート メニューが作成され、アンインストールできるようになりますか?

Visual Studio には、.msi インストーラー ファイルを作成するインストーラー ビルダーがあります (無料の Express バージョンには含まれていない可能性があります)。単純なタスクにはかなり簡単に使用できますが、それ以上のことを行うには複雑になります。

または、従来の setup.exe タイプのインストールを作成するには、優れた無料のInnosetupを使用します

Linux では、通常、ディストリビューションで使用されている形式 (.deb / .rpm ) を使用してパッケージを作成します。それぞれの詳細については多くの指示があり、そのためのツールはおそらく Linux システムに既にインストールされています。

于 2012-06-08T16:10:34.070 に答える