1. ホーム
  2. c++

[解決済み] C/C++プロジェクトにMavenを使用する

2023-03-13 05:38:52

質問

私は、素人の、お粗末に書かれた、率直に言って原始的な C/C++ コード (いくつかの C といくつかの C++ を意味する) のクラスタに Maven ビルドを適用しています。問題は、現在、多くのコードが流通しており、簡単に置き換えることができないことです。それを構築するには、多くの部族の知識が必要で(様々なパーツをコンパイル/構築する方法を見つけるために、キューブからキューブへ移動しなければなりません)、リリースは完全に悪夢です。(いいえ - 書き直すつもりはありません。お願いしないでください) 質問ですが、私は maven-native-plugin を使うべきか、それとも exec-maven-plugin を使って単純に実行するか? 私は かなり良い経験 に投資すべきかどうかわかりません。 native プラグインに投資すべきか、それとも exec ? もしあなたがC/C++を"Mavenizing"した経験があるなら、私はいくつかの助言を得たいと思います。

どのように解決するのですか?

私が強くお勧めするのは maven-nar-plugin(メイヴンナープラグイン . 私は、このプラグインが他のものよりも多くの点で優れていると感じています。ソースファイルをリストアップする必要がなく、複数の OS やアーキテクチャを処理し、ユニットテストや統合テストを処理し、一般的に maven のやり方に従います。NAR (ネイティブ アーカイブ) は、気になる成果物 (.dll、.so、.a、.exe など) だけでなく、メタデータ、ヘッダーなどを意味のある方法で含んでいます。

サードパーティ製ソフトウェアを NAR にパッケージ化するには、少しばかり前準備が必要ですが、かなり簡単です。いったん NAR になれば、たとえば、通常の Maven の依存メカニズムを使用して、それらとリンクするだけです。

<dependency>
  <groupId>cppunit</groupId>
  <artifactId>cppunit</artifactId>
  <scope>test</scope>
</dependency>

欠点としては、活発にメンテナンスされていないようですが、フル機能を備えており、Mavenプラグインのオーサリングのかなり印象的な例となっています。