2009-06-03 10 views

答えて

7

/showIncludes switch to cl.exeを使用して、#includeヘッダーをソースファイルで一覧表示することができます。ネストされたインクルードは、スペースでインデントされて示されます。 /Zsスイッチで構文チェックモードを有効にして、速度を上げ、.objファイルの作成を回避することもできます。

あなたはPerlとuniqのバージョン(例えばGnuWin32から)がインストールされている場合は、以下のワンライナーがmyfile.cppが使用する一意のヘッダのリストをダンプします:

cl /Zs /showIncludes /EHsc myfile.cpp | perl -ne "print if s/^Note: including file: *//" | sort | uniq 

それがあまりにも難しいことではありませんこれを適切なnmakeのルールを作成する別のスクリプトにパイプします。

3

あなたは私のようなプロジェクトを構築するためにNMAKEを使うと仮定します。私はWindowsでも泥沼のようなツールが必要です。ですから、私はMinGWを使ってヘッダの依存関係を生成します。

NMAKEで使用されます、あなたのMakefileで
OBJS=... list object files in your project... 

    all: Makefile.deps 

    Makefile.deps: $(OBJS:.obj=.dep) 
     cat $+ > [email protected] 
     rm -f $+ 

    %.dep: %.cpp 
     g++ -MM -MG -MT$(@:.dep=.obj) [email protected] $< 

、一番下に次の行を追加します:

!INCLUDE Makefile.deps 

あなたがしたいときに最初に私はそれがこのように、Makedepends命名され、依存関係を生成するMakefileを作成します依存関係を作成し、このようにgmakeを実行します。

make -fMakedepends 

そして、あなたはいつものようにNMAKEでプロジェクトをビルドすることができます

nmake 

PS:すみません、申し訳ありませんが、私は書いています。 -_-

1
.SUFFIXES: 
.SUFFIXES: .c 

all: x.obj 

# Sample batch-mode rule which both compiles and produces .dep files suitable for NMAKE. 
# Also works around the fact that CL.EXE spits diagnostics in stdout instead of stderr. 
# This is equivalent to -MD -MP [email protected] -MF$(@R).dep in GNU Make + GCC. 
CCOMMAND = $(CC) $(CFLAGS) /c $< 
.c.obj:: 
!IF "$(MAKEFLAGS:S=)" == "$(MAKEFLAGS)" 
    @echo " $(CCOMMAND)" 
!ENDIF 
    @$(COMSPEC) /E:ON /V:ON /C "$(CCOMMAND) /showIncludes & echo Exit: !ERRORLEVEL!" | \ 
     $(COMSPEC) /E:ON /V:ON /C "for /f "tokens=1,* delims=]" %%A in ('find /v /n ""') do \ 
     @if %%~xB == .c (set _=%%~nB&rem.>!_!.dep&echo %%B) else for /f "tokens=1,2,3,*" %%C in ("%%B") do \ 
     @if %%C == Note: ((echo !_!.obj: "%%F"&echo "%%F":) >> !_!.dep) \ 
     else if %%C == Exit: (exit /b %%D) else echo %%B" 

# Include the generated deps. 
!IF ![(for %i in (*.dep) do @echo !INCLUDE %i) >Build.tmp] 
!  INCLUDE Build.tmp 
!  IF ![del Build.tmp] 
!  ENDIF 
!ENDIF 
関連する問題