2

現在、新しい C プロジェクトを作成中ですが、各コンパイルにデータ (時間と日付を含む) をスタンプする必要がありました。

それを行うための標準的で簡単な方法は、次のいずれかです。

  1. 簡単なスクリプトで .c ファイルを生成し、必要な情報を追加します。このソリューションでは、プロジェクト自体に変更が加えられていない (ファイルが変更されていない) 場合でも、プロジェクトは常に新しいアーティファクト (.o など) を生成します。

  2. 必要に応じてtimedate 、およびその他のものを含む .c ファイルを準備し、プロジェクトをクリーンアップした後にのみコンパイルします。プロジェクト内のソース ファイルまたはヘッダー ファイルを変更しても、スタンプは変更されません (最初にプロジェクトをクリーンアップしない限り)。

私が探しているのは、その中間にあるものです。プロジェクト ファイルが変更されたときだけ、コンパイル スタンプを追加してください。

4

2 に答える 2

2

eclipse についてはよくわかりませんがmake、makefile を使用する場合は、次の例のアイデアを使用できます (cygwin 環境で動作します)。

makeリンクするコマンド (最後のコマンド) を実行すると、時刻が埋め込まれたファイルもコンパイルされます。実行可能ファイルが最新の場合、リンクは呼び出されないため、タイムスタンプは変更されません。これが機能するためにmakeは、タイムスタンプを含むファイルが前提条件であることを通知しないでください。

# Makefile
a.exe: a.o # note: doesn't depend on mytime.c
    gcc a.o mytime.c -o a.exe # note: cannot use ld, must link with gcc

a.o: a.c
    gcc -c a.c

// mytime.c
char* mytime = __TIME__;

// a.c
#include <stdio.h>
extern char* mytime;
int main()
{
    printf("%s\n", mytime);
}
于 2012-06-14T20:39:56.360 に答える
1

aまたは aが実行されるたびに、gitフックを使用して (バージョン管理されていない) タイムスタンプ .c ファイルを作成することもできます。git commitgit pull

于 2012-06-14T21:02:01.350 に答える