Occa: cmakeサポート

作成日 2018年10月08日  ·  11コメント  ·  ソース: libocca/occa

こんにちはOCCA-ers、

ビルドシステムを生成するためにcmakeを使用する予定はありますか?
私たちの科学計算ソフトウェアはすべてそれを使用しています。 これにはかなりの努力が必要ですが、一度実行すると支払いが行われます。

一番、

Amik

question help wanted

全てのコメント11件

私の2セント...

私が採用している多くのソフトウェアパッケージ(VTKなど)は、cmakeを使用して構成および構築されていますが、私はそれが嫌いです。 cmakeの言語とコードについてはそれほど多くはありませんが、非常にあいまいなmakefileの「コンポーネント」については、深く難読化されたディレクトリ構造に生成されます。 したがって、cmakeが失敗する理由、何かが正しくコンパイルされない理由、またはビルドを微調整する方法を理解することは、(少なくとも私にとっては)簡単な作業ではありません。

構成仕様に従って現在のビルド環境のmakefileを生成することは一般的に良いことですが、ジェネレーターが何であれ、IMHOは、読み取り可能で潜在的に調整可能な(由緒ある '構成のように)単一のフラットで単純なmakefileのみを生成する必要があります。 'します)。 それは確かにcmakeではありません!

こんにちはポール、

私はそれが好きではありませんが、プロジェクトにインストールされると、それはかなりしっかりしています。 その主な利点は、統合とテストです。 たとえば、-仮定-OCCAをかなり大きなコードに統合し始め、ソースを3rdpartyというディレクトリに配置し、cmakeを使用している場合は、cmakeに新しいディレクトリadd_directory(...)を通知します。 。 次に、「トップ」CMakeLists.txtのコンパイラとその他の仕様を使用して、OCCAを自動的に構築します。 テストドライバーのOCCAに(最初は)依存関係を追加し、後でさらに多くのソース/その他のディレクトリに依存関係を追加すると、簡単になります。

私のcmakeの経験では、「make」レベルで問題が発生した場合、通常、問題は、トップレベルでcmakeを専門化しすぎていることです(たとえば、明示的なコンパイラフラグを強制します...)。 ほとんどの問題では、make VERBOSE = 1は、完全なコンパイル行(カットアンドペーストできます)を表示して、何が問題なのかを特定します(その後、cmake(makeではなく)を変更します)。

また、常にctestを使用しています...

とにかく、これに関して水域をテストしたかっただけです。

一番、

Amik

私はそれのファンです(多分多すぎるかもしれません)、実際、CMakeサポートは私が最初に探したものです。 私はすべての依存関係(たとえばGooFit )をexternのgitサブモジュールとして管理し、CMakeがサブモジュールについて知らない場合はユーザーのためにそれらをチェックアウトし、CMakeはすべての依存関係を結合します。 CMakeの優れている点は、あらゆる作業方法をサポートしていることです。たとえば、XcodeなどのIDEを使用する場合は、CMakeを使用する場合にのみ簡単です。 CCacheの追加、ビルドのデバッグ、clang-tidyなどを非常に簡単に行うことができます。

@ henryiii IDEが統合されている場合、それは良い考えのように思えます。

makeはほとんどの場所ですぐに使用できるため、Makefileビルドを削除することを躊躇していますが、CMakeサポートを追加することもできます。 CI構成を更新して、 makecmakeの両方のビルドでテストを実行できます。

時間がある場合は、コアCMakeファイルを使用してPRを作成できますか? それが役に立ったら、ビルド時に予想されるすべての環境変数/副作用を追加できます

現在、新規/将来のOCCAユーザー(HPCプログラマー)は、OCCAソースをダウンロードし、 makeと入力するだけです。 とてもシンプルです。 私にとって、OCCAの価値提案は、ビルドシステムではなく、並列プログラミングドメインで提供される優れた機能に100%基づいています。 それでも、OCCAがcmakeベースのビルドに移行するための小さな付加価値があるかもしれません。私にはわかりません。

おそらく、cmakeコーディングに精通している誰かが、必要なcmakeファイルを作成し、プルリクエストを介してそれらをOCCAに提供することができますか? これは、一部の人々が抱えていると思われる懸念を満たし、実際にOCCAを使用するのに役立つ可能性があります。

cmakeのテーマに戻りますが、とにかく私たちの中には「マイレージは異なる場合があります」という人もいます。 真剣に、現在の初心者の段階を超えたレベルでcmake言語コードを記述/デバッグ/変更する方法を実際に学んだ場合、cmakeに対する私の熱意は大幅に高まると確信しています。 それまでの間、誰かの書き込みが不十分/古いCMakeLists.txtやバグのある、または書き込みが不十分なFind*.cmakeファイルが、ダウンロードしたばかりのパッケージで正しく機能するというイライラする問題が発生した場合評価のためのgithub、私は否定的な感謝の不快な感覚を持つことができます!

@pdhahn明確にするために、「コンパイルするためにmakeと入力するだけ」のビルドを削除することはないと思います。 間違いなくクリーンアップが必要です(#149)が、ユーザーにとってインストールと使用を簡単にすることが、ここでの最優先事項です

CMakeを追加すると、すでにCMakeを使用しているプロジェクトでOCCAを使用するのに役立ち、このIDE統合により開発者の生活が楽になるようです。

@ dmed256そうです、IDEのことは、OCCAにとって重要な付加価値である可能性があるように聞こえます。

ただし、EclipseやQt Creatorなど、人気のあるさまざまなIDEに対応する必要があります。

CMakeは、IDEだけでなく、あらゆる種類のツールをサポートします(そして、あらゆる種類のツールがそれをサポートします)。 すべての主要なIDEは、CMakeによってサポートされているか、CMakeがサポートしています。 CLion、Qt Creator、Eclipe、Xcodeなど。 また、link-what-you-use、include-what-you-use、clang-tidy、ccache、さまざまなテスト統合、パッケージ化などもサポートしています。

CMakeビルドがうまく機能した場合は、最終的にMakefileでCMakeを呼び出すだけで済みます。これは、GooFitで以前に行ったことがあります。 makefileにCMakeをダウンロードしてから呼び出すこともできます(これまで試したことはありませんが、持っている人と話をしたことがあると思います)。 これにより、どこでも最新バージョンで動作できるようになります(実行している場所に応じて、Linuxまたはmacosのバイナリをダウンロードする単純なトグルが必要です)。

今後数週間でoccaを評価したいと思っています。そうすれば、CMakeのサポートに役立つかもしれません

@ henryiiiそれは理にかなっています、私たちはとても多くの時間しかありません:)とにかく、CMakeのアドバイスに感謝します!

@ hknibbe2、@ SFrijters@ amikstcyr @ JamesEggletonからのすべての作業に感謝します🎉

このページは役に立ちましたか?
0 / 5 - 0 評価