問題タブ [cpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2862 参照

cmake - CPack NSIS、Windows 用のインストーラーを生成

VS プロジェクト内でパケット ジェネレーターを実行しようとしていますが、ターゲットとファイルからのインストールで絶対パスを使用しているため、コンパイル中にクラッシュします。

2 回確認しましたが、すべてのインストール ディレクトリは相対的です。${PROJECT_BINARY_DIR} のサブフォルダーとして、次のような非常に多くの変数を設定しました (これは相対的である必要があります)。

CMAKE/CPACK はこれらの変数を絶対パスとして解釈しますか? もしそうなら、それらの変数で CPack を適切に動作させる方法はありますか? サブ相対パスが関係している場合に CPack を使用するにはどうすればよいですか?

ありがとう

0 投票する
1 に答える
3438 参照

cmake - CPack: エクスポートを使用してライブラリ パッケージを作成する方法は? *Targets-noconfig.cmake ファイルがありません

アップデート

Windows の cpack バージョンのバグのようです。Linux (Ubuntu) では、cpack コマンドで不足しているファイルが表示されます。時間があるときに、さらに調査を行い、結果を投稿します。


注: この質問を単純化して新しい短い例を作成することができたので、この質問を完全に変更しました。しかし、コアの問題は少しも変わりませんでした。

問題の説明

私はライブラリ プロジェクトを持っています。それを Foo と呼びましょうcpack。コマンドを使用してパックします。このパッケージにはFooConfig.cmakeFooTargets.cmakeファイル (cmake メカニズムによってエクスポートされた 2 番目のファイル) が含まれています。問題は、cmake がそれを使用するのに十分ではないということです。find_package()で見つけたのですが、でリンクするfooNo rule to make target foo-NOTFOUND', needed by bar.exe'. Stop.エラーが出ます。

しかし、でインストールするとmake install DESTDIR=./out_dir、動作し、もう 1 つのファイルが含まれます: FooTargets-noconfig.cmake. このファイルには、foo ライブラリ ファイルへのパスが含まれています。

それで、これを修正するために私は何をする必要がありますか?この動作を説明するドキュメントはありますか?

おまけの質問:*-noconfig*ファイルにはライブラリへのパスが含まれていますが、ヘッダー ディレクトリへのパスは含まれていません。この生成されたファイルにも自動的に含まれるようにライブラリ プロジェクトを構成する方法はありますか?

詳細情報、メモ:

  • 私の OS: Windows 7、64 ビット。
  • コンパイラ: MinGW 4.4.0 (32 ビット)。(注: はい、代わりにコマンドmakeを使用しますmingw32-make。)
  • CMake バージョン: cmake 2.8.12.2。
  • の結果を使用しようとするmake installと、No rule to make target xyz-NOTFOUND', needed by Index.exe'. Stop.エラーが消え、すべてがコンパイルされ、結果のexeが期待どおりに機能しました。必要なものは noconfig ファイルだけのようです。

ワークフロー / 再現手順:

  • コードを作成した後 (以下を参照):
  • cmake-guiビルド ディレクトリ (ライブラリ プロジェクト) を作成する (構成、次に生成)
  • mingw32-makeビルドディレクトリに
  • バリアント a)mingw32-make install DESTDIR=./out_dirライブラリをインストールする
  • バリアント b)cpack -C CpackConfig.cmake -G ZIPライブラリでパッケージを取得する
  • 前のステップのファイルを使用し、環境変数にある特別なディレクトリに移動してCMAKE_PREFIX_PATH、cmake がそれを見つけられるようにします (元のファイルが削除されるように、「コピー」ではなく「移動」に注意してください)。
  • cmake-gui実行可能プロジェクトの場合 (再度、構成、次に生成)
  • mingw32-makeビルドディレクトリに

最後のステップは、バリアント a) と b) で異なります。a) の場合、期待どおり、ビルドが終了し、実行可能ファイルが正常に動作します。b) の場合、エラーNo rule to make target xyz-NOTFOUND', needed by Index.exe'. Stop.が表示され、それ以上の情報はありません。

私のコード例:

Foo/CMakeLists.txt:

フー/foo.cpp:

フー/フー.h:

Foo/FooConfig.cmake :

バー/CMakeLists.txt:

バー/bar.cpp

いくつかの生成されたファイル:

興味がある場合のために、生成されたファイルはいくつかあります。

lib/foo/FooTargets-noconfig.cmake

lib/foo/FooTargets.cmake

0 投票する
1 に答える
357 参照

macos - Open 経由で OSX バンドルを実行する

OpenCV と Qt を含む OSX で CMake/CPack を使用して OSX バンドルを作成しようとしています (ただし、現時点ではこれらの依存関係は重要ではないと思います)。すべてがコンパイルされ、バンドルが正常に作成されます。バンドル内のターミナルから実行すると、作成中の実行可能ファイルなどの必要なライブラリ パスを変更するスクリプトがあります。私が抱えている問題は、open コマンドを使用して MyApp.app ファイルを実行しようとするか、アプリをダブルクリックするだけでエラーが発生することです。

アクセス許可の変更に関連する他の LSOpenURLsWithRole() エラーに対する他の解決策を見てきましたが、それは役に立ちませんでした。また、このエラーコードは「不明なエラー」ですので、どう進めればよいかわかりません。

0 投票する
2 に答える
2945 参照

cmake - CMake コンポーネントのインストール時にインストールされるファイルのリストを取得する方法

がインストールされている場合にどのファイルがインストールされるかCOMPONENT(コンポーネントのようなもの) をプログラムで (CMake で) 知る方法はありget_propertyますか?

現在、COMPONENTパッケージ用の一時的な場所に をインストールし (パッケージにはCPackを使用しません)、カスタム コマンドを使用してパッケージを作成しています。CMake でのパッケージ化中に次のコマンドを呼び出しています。

ファイルのリストを取得して、それらのファイルのみをパッケージに明示的に含めることができるかどうかを知りたいですか? または、それらをカスタム コマンドの出力として追加することはできますか?

0 投票する
1 に答える
1883 参照

installation - cpack への追加コマンドの追加 - NSIS パッケージャー/インストーラー

CPack と NSIS を使用して、既存の GeneratorConfig.cmakeファイルを使用して Windows 用の私のプロジェクトをパッケージ化したいと考えてい.iniます。myProject.ini%APPDATA%/myProject/myProject.ini

これは GeneratorConfig.cmake です

以下のコードでこれを実行しようとしましたが、これによりパッケージがビルドされますが、myProject.iniどこにもコピーされません。

ヘルプや提案をいただければ幸いです。

0 投票する
1 に答える
5166 参照

cmake - CMake を使用して CPack バイナリからファイル/ディレクトリを除外する方法

以下のような構造のプロジェクトがあります。

にはいくつかのライブラリ依存関係がありますdeps。これらのライブラリにはすべて CMakeinstallコマンドがあります。

の後install、出力ファイルは次のbuildディレクトリに配置されます。

私の場合、実行cmake packageしてバイナリ インストール パッケージを生成し_CPack_Packagesます。

問題は、バイナリに含まれるlib必要がないことです。includeしかし、私はまだ解決策を見つけていません。

次の方法を試しました。

  1. CPACK_SOURCE_IGNORE_FILESCPACK_SOURCE_STRIP_FILES

これらは、私が考えるソースをパッケージ化するためのものであり、私の場合には機能しません。

  1. ポスト インストール スクリプトinstal(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/clean.cmake")を使用して、不要なファイル/ディレクトリを削除します。

clean.cmakeif(EXISTS "${CMAKE_INSTALL_PREFIX}/bin/ProjectA.lib")返されたでは、スクリプトの実行FALSE中はディレクトリに何もありませんが、${CMAKE_INSTALL_PREFIX}終了後にファイルを見つけることができます。

  1. を変更してみてくださいinstall_manifest.txt。このファイルに正しくアクセスする方法が見つかりません。これが機能するかどうかはわかりません。

ご協力ありがとうございました!


編集:

以下のinstallようなコマンド: