2017-11-24 24 views
1

ビルドシステムを作成しようとしていますが、私が不明瞭に使用するはずの構造です。 私は、関連するインクルードとともに様々なライブラリファイルを持っています。 これらのライブラリファイル(またはモジュール)には、さまざまなバージョンがあります。モジュール1のバージョンは1つだけですが、ModuleNのバージョンは50です。 私の問題は、特定のバージョンのLibrary.aパッケージをビルドできるように、私のツリーをどのように整理するのか分かりません。Makefile - 複数のライブラリバージョンを整理してビルドする方法

私が最初にかかわらず、次のように私のファイルを整理することでした:それはまた、全体で最新のライブラリの連合を組み込むために必要考慮して、今すぐ

  Libraries      Includes 
       ¦        ¦ 
    ----------------------   ---------------------- 
    ¦   ¦   ¦   ¦   ¦   ¦ 
    V1.0  V1.1  V1.2  V1.0  V1.1  V1.2 
    ¦   ¦   ¦   ¦   ¦   ¦   
Lib1.c  Lib3.c  Lib2.c  Lib1.h  Lib3.h  Lib2.h 
Lib2.c    Lib3.c  Lib2.h    Lib3.h 
Lib3.c       Lib3.h 
Lib4.c       Lib4.h 

は、どのように私は私のパッケージV1.2を建設しますツリー全体(すなわち、V1.2パッケージ= V1.0 U V1.1 U V1.2)。この場合、ルールを手動で定義することは困難ではありませんが、すぐに100のファイルで管理できなくなります。

一般的な方法で、変更されていないファイルをバージョンから次のものに複製することがありますが、どこに何があるかを知ることが難しくなります。

この問題の典型的なアプローチはありますか?

+0

ごめんなさい:あなたの木はファイルシステムを描いているのですか? Lib3.cは1か所にしか存在しませんか? – Vroomfondel

+0

実際に私の記述を更新しました。それが今より良くなったら教えてください。 – progLearner

+1

Gitを使うことができます。バージョンごとに1つのブランチを使用します。 – klutt

答えて

0

OPは彼がGitを使いたくないと言っていたので、この答えはこの質問を読む他の人のためのものです。

リポジトリから任意のバージョンを構築するための非常に一般的な方法は、タグを使用することです。タグ付けは、特定のコミットを強調表示する方法です。 Gitはlightweightと注釈の2種類のタグをサポートしています。

軽量タグは、ブランチのようなものです。コミットを指すポインタです。ブランチとの違いは、このポインタが新しいコミットで変更されないということです。これらのタグは、あなたの目的にはお勧めできません。彼らは開発中に開発者のためのものです。軽量タグを作成するには、このコマンドを使用します。

git tag <name> 

他のタグタイプは注釈付きタグです。彼らはもっと多くの情報を含んでおり、チェックサムされています。これらはリリースに使用したいものです。コミットの場合と同様に、注釈付きタグのタグメッセージを指定します。注釈付きタグを作成するには、次のコマンドを使用します。

git tag -a <name> 

これは、タグメッセージを書き込むエディタを開きます。あなただけの使用、すべてのタグを表示するには-m "<message>"

であまりにもコマンドラインでメッセージを指定することができます。続きを読む

git checkout <tag> 

:あなたがチェックアウトすることができ

git tag 

あなたが枝をチェックアウトと同じようにタグ付けここでのタグ付けについて:https://git-scm.com/book/en/v2/Git-Basics-Tagging

だから、コミットごとに(好ましくは注釈付きの)タグを作成することですリリースにnds。

git checkout <tag> 
make 

注:上記のコメントで、私は枝話していたその後、あなたはちょうどあなたがこの2つのコマンドで任意のバージョンを構築することができmakeを呼び出すことによって、プロジェクトを構築することができますと仮定。それは私のために一時的な混乱でした。この目的のために枝を使用することは可能ですが、タグ付けは適切な方法です。

関連する問題