C言語ファイルをNMAKEする為の最小Makefile

タイトルはちょっと盛った。

C言語Hello WorldのファイルをVisual Studioコンパイラでmakeする

#include "stdio.h"

void main(void) {
    printf("Hello World\n");
}

参考にしたサイト

makefile と nmake ~ makefile を読み解く - C/C++ による Windows プログラミング入門講座 - C/C++ 入門

TARGETNAME=test_make
OUTDIR=obj
CC=cl.exe
LINK=link.exe

ALL: $(OUTDIR)\$(TARGETNAME).exe

$(OUTDIR) :
  @if not exist $(OUTDIR) mkdir $(OUTDIR)

CPPFLAGS=\
  /nologo\
  /W3\
  /Fo"$(OUTDIR)\\"\
  /Fd"$(OUTDIR)\\"\
  /c\
  /Zi\
  /D_WIN32_WINNT=0x0600\
  /DUNICODE\
  /D_UNICODE

LINK32_FLAGS=\
  /nologo\
  /subsystem:console\
  /pdb:"$(OUTDIR)\$(TARGETNAME).pdb"\
  /out:"$(OUTDIR)\$(TARGETNAME).exe"\
  /DEBUG

LINK32_OBJS=\
  $(OUTDIR)\$(TARGETNAME).obj

$(OUTDIR)\$(TARGETNAME).exe : $(OUTDIR) $(LINK32_OBJS)
  (LINK) $(LINK32_FLAGS) $(LINK32_OBJS)

.c{$(OUTDIR)}.obj:
  $(CC) $(CPPFLAGS) $<

clean:
  -@erase /Q $(OUTDIR)\*

上記のファイルで obj フォルダ下に test_make.exe というファイルが作成される。

nmake を実行する場合は以下のバッチをたたく

@echo off

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"