2017-09-23 6 views
0

私はオープンソースのC++ライブラリを作成しており、そのバージョンを管理したいと考えています。たとえば、各リリースにラベルを付け、まだリリースされていないバージョンのラベルを付けます。私は、あらかじめコンパイルされたライブラリをダウンロードして、使用しているバージョンを知っていて、並行してライブラリのいくつかのバージョンを管理したいと思います。 このライブラリは静的ライブラリとしてのみコンパイルされます(動的ではありません)。 私はcmakeを使用していません(これはバージョンのラベル付けをサポートしています)。 これを行うにはどのような方法が推奨されますか? 現在のバージョンを含むHファイルを追加する必要がありますか?それには何が含まれますか?多分別の考えですか?私のC++ライブラリのバージョンを管理するための推奨される方法

+1

https://help.github.com/articles/creating-releases/ –

+0

ありがとう!しかし、この記事では、ライブラリ(github上)の外部でのバージョン管理について話しています。私はライブラリ内に埋め込むことができるものに興味があるので、ダウンロードした人がバージョンを問い合わせることができます – fx23

+0

ほとんどのプロジェクトはバージョン番号をヘッダファイルの '#define'に書きます。 –

答えて

3

個人的には、私が書いたすべてのライブラリに構成ヘッダーファイルを追加するのが好きです。 これにより、私の図書館のユーザーは、可能な構成を容易に理解し、必要に応じて調整することができます。バージョン管理について

、私は通常、そのファイルに3つのバージョン変数を追加:静的を使用して

  • ライブラリをダウンロードする場合

    • static const unsigned VERSION_MAJOR = x; 
      static const unsigned VERSION_MINOR = y; 
      static const unsigned VERSION_REVISION = z; 
      

      これは、ユーザーが簡単にバージョン番号を確認することができますコンパイル時のマクロ

    • 実行時に動的に
    私はそれにもかかわらず推薦

    :数値バージョンをテストすることをユーザーに要求してはならない追加/ライブラリ内/廃止を削除しない機能

    • ではなく、あなたがに#defineを追加し、および/または必要がありますオフまたはオプションは、このオプションがオンになっているかどうかを指定する方法で、例えば:

      #define AWESOME_LIBRARY_SUPPORTS_CACHING 
             -- OR/AND -- 
      static bool isCachingSupported() 
      
    • あなたはあなたのライブラリーに含まれ、任意のコードがVERSION_MAJOR以来、何の命名の衝突がないことを確認するために、適切な名前空間を使用してラップする必要があります

      非常に一般的な名前です。

    • thesetheseなどの適切なバージョン管理規則に従います。

  • 関連する問題