プロジェクトを少ない手順でコンパイルおよびリンクする方法について 3 つの質問があります...
まず、私のプロジェクトは次のようになります: (私は Watcom C を使用してプロジェクトをコンパイル//リンクします)
ディレクトリ「MyProject」には、さまざまなモジュールといくつかのファイル用の 3 つのサブディレクトリが含まれています。
- ディレクトリ 'A' (ah と ac を含む)
- ディレクトリ 'B' ( bh と bc を含む)
- ディレクトリ 'C' (ch と cc を含む)
- my.c と my.h
- my.lnk
- メイクファイル
そして、各サブディレクトリ内には、対応する 1 つの makefile があります...
[Q1]ディレクトリ A の ah を更新し、ディレクトリ B の bc によって ah が参照されていると仮定すると、元の手順は次のようになります。
- ディレクトリ A でコンパイルします ( obj と lib が生成されます...)
- ディレクトリ B でコンパイルします ( obj と lib が生成されます...)
- ディレクトリ MyProject に戻り、コンパイルしてリンクします
上記をカバーするために一歩踏み出すことはできますか?
[Q2]既存の obj/lib をすべて無視して、すべて再構築したいのですが、どうすればいいですか?
- これには時間がかかることはわかっていますが、「強制終了して再構築」する方が良い場合もあります...
[Q3] my.h を更新して、ac,bc,cc で参照されている場合..
上記をカバーするために一歩踏み出すことはできますか?
[サブディレクトリ内の私のメイクファイルは次のようになります]
INCLUDE1 = -ic:\watcom\h
OBJECTS1 = a.obj
CFLAGS = -zq -mf -oxsbl $(INCLUDE1)
DEST = a.exe
COMPILER = wpp386
.erase # special cmd, tell wmake to "erase" target if make is not successful
.cpp.obj: .AUTODEPEND
$(COMPILER) $(CFLAGS) $<
$(DEST) : $(OBJECTS1) makefile
[メインディレクトリにある私のメイクファイルは次のようになります]
INCLUDE1 = -i=c:\myproj\my -i=c:\watcom\h
OBJECTS1 = my.obj
CFLAGS = -zq -fp6 -mf -6r -s -oxsbl $(INCLUDE1)
DEST = my.exe
COMPILER = wpp386
LINKER = wlink
LNK_FILE = my.lnk
.erase # special cmd, tell wmake to "erase" target if make is not successful
.cpp.obj: .AUTODEPEND
$(COMPILER) $(CFLAGS) $<
$(DEST) : $(OBJECTS1) makefile my.lnk
$(LINKER) @$(LNK_FILE)
【アップデート1】
私は wpp386 をコンパイラとして使用しています。これは watcom c++ ツールです。
ターゲットをビルドするには、1 つのバッチ ファイルを使用して cpp ファイルをコンパイルします。
@echo off
del a1.lib
del *.err
wmake -h
wlib -q a1.lib + a.obj
del *.obj
- cpp ファイルを正常にコンパイルでき、すべて問題ありません。
- ディレクトリBで、同じ方法(バッチファイル+メイクファイル)を使用してb.cppをコンパイルします
私のプロジェクトの作業と私が尋ねる理由を要約すると、ヘッダーファイルを更新するだけで「より高速なコンパイル/リンクシーケンス」を見つけることができます...
コマンドehco hello
をルールに追加しようとした$(DEST)
ところ、問題ないことがわかりました。次に、使用echo $(MAKE)
して取得しました:
...
echo C:\WATCOM\BINW\WMAKE.EXE
C:\WATCOM\BINW\WMAKE.EXE
...
ありがとう !