2

私は、Aに応じてBを使用して2つのライブラリAとBを開発しています。どちらも、独自のGitリポジトリで管理されています。ライブラリはCMakeで構築され、標準のUNIXディレクトリにインストールされます。インストール中に、.pcによって使用されるファイルもインストールされpkg-configます。ライブラリBはpkg-configライブラリAの検索に使用するため、ライブラリAがシステム全体にインストールされているかmake installPKG_CONFIG_PATH適切なディレクトリに設定されている必要があります。

ここで、Jenkinsを使用してリモートマシン上にライブラリAを構築します。残念ながら、依存関係が満たされていないため、ライブラリBを構築pkg-configできません(ライブラリAが見つかりません)。コマンドは独自のシェルで実行されるため、ビルド前のステップでパスを設定することはできません。

質問は

  • どういうわけかmake installライブラリAはできますか?または、
  • どういうわけかCMakeを指すことができ/var/lib/jenkins/jobs/libA/install_dir/libますか?
  • 相互依存ライブラリを使用してプロジェクトを構築するためのより良い方法はありますか?
4

2 に答える 2

2

質問に順番に答えるには:

ライブラリAをインストールするには-ライブラリAをビルドするJenkinsジョブを構成して、ライブラリをビルドアーティファクトとしてアーカイブできます。次に、ライブラリBをビルドするジョブは、実行の開始時にJenkinsからアーティファクトをダウンロードできます。例:http:/// job / libA / lastSuccessfulBuild / artifact /
ライブラリBジョブがライブラリAを収集したら、インストールして使用できます。 。

Cmakeの設定– cmakeについて十分に知らないので、答えられないのではないかと思います。

より良い方法はありますか?おそらくRakeを使用して、多くの依存関係を持つビルドチェーンを制御するために使用します。ライブラリAをリモートマシン上に構築する必要がある場合にどれだけうまく機能するかはわかりませんが。両方のライブラリが同じマシン上に構築されている場合は、管理が簡単になる可能性があります。

于 2012-07-26T16:56:22.150 に答える
1

user1013341によって提案されているように、アーティファクトの使用は、この問題に必要な手順の1つです。しかし、それを機能さpkg-configせるには、もう少し行う必要があります。

  1. ライブラリAを設定CMakeLists.txtして、でtarballを作成しmake package_sourceます。
  2. ライブラリAのビルドが成功すると、Jenkinsはこのtarballを作成し、アーティファクトとして保存します。
  3. ライブラリBは、Copy Artifactプラグインを使用してtarballを取得し、解凍します。tarballの内部には、まだビルドされたプロジェクトと、.pcライブラリAのインストール場所を指すファイルがあります。
  4. 次のビルドステップでは、EnvInjectプラグインPKG_CONFIG_PATHを使用して、とLD_LIBRARY_PATHを非タールライブラリAに設定します。
  5. 最後になりましたが、通常のCMakeビルドプロセスを開始でき、環境変数に従って正しいパスが選択されます。
于 2012-08-10T19:58:21.123 に答える