Visual C++のエディタがお気に召さない場合は、お気に入りのエディタでソースコードを作成し、メイク(make)ファイルを使って実行ファイルを作成する方法があります。
コンパイル・リンク・実行はバッチ(bat)ファイルを実行するだけです。今回はその方法について説明します。
バッチ(bat)ファイルを実行すると、下記のウインドウが表示され、コンパイルに成功すれば、作成したアプリケーションが実行されます。
Visual Studioのウインドウは立ち上がりません。
Visual C++のエディタがお気に召さない場合は、お気に入りのエディタでソースコードを作成し、メイク(make)ファイルを使って実行ファイルを作成する方法があります。
コンパイル・リンク・実行はバッチ(bat)ファイルを実行するだけです。今回はその方法について説明します。
バッチ(bat)ファイルを実行すると、下記のウインドウが表示され、コンパイルに成功すれば、作成したアプリケーションが実行されます。
Visual Studioのウインドウは立ち上がりません。
test.cpp、test.rcを作成します。
下記のtest.batファイルを用意し、ソースファイルと同じフォルダに入れます。
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86 nmake /NOLOGO -a if %ERRORLEVEL% == 0 Win32Project1.exe pause
vcvarsall.bat のあるフォルダを指定してください。先頭に「call」を、最後に「x86」をつけたものにします。
32bit版のWindowsを使用している場合は、Program Files (x86)フォルダは、Program Filesになります。
Visual Studio 2013の場合は、Microsoft Visual Studio 12.0、
Visual Studio 2012の場合は、Microsoft Visual Studio 11.0、
Visual C++ 2010の場合は、Microsoft Visual Studio 10.0、
Visual C++ 2008の場合は、Microsoft Visual Studio 9.0
になります。
「nmake」は、メイクファイルを実行するものです。
「/NOLOGO」 は Microsoft のロゴ表示を抑制するオプションです。
「-a」はリビルドに相当します。
Win32Project1.exe
は、コンパイル・リンクで生成される実行ファイルを指定します。
nmakeでエラーがなかったとき(if %ERRORLEVEL% == 0)のみ実行されます。
最後に「pause」をつければコマンドプロンプトのウインドウが自動で閉じるのを抑制します。
エラーが出たときに役立ちます。
下記のmakefileファイルを用意し、ソースファイルと同じフォルダに入れます。
日本語があるとうまくいかないときがあるので、すべて半角英数字にします。
# UserChange
TARGETNAME=Win32Project1
TARGETNAME_C=test
TARGETNAME_R=test
OUTDIR=.\Release
LINK32=link.exe
ALL : "$(OUTDIR)\$(TARGETNAME).exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# compile
CPPFLAGS=\
/O2 /Oi /GL\
/nologo\
/MT\
/W3\
/Fo"$(OUTDIR)\\"\
/Fd"$(OUTDIR)\\"\
/c\
/Zi\
/D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE"\
/FD\
/EHsc\
/MT\
/Gy\
# link
LINK32_FLAGS=\
/out:"$(OUTDIR)\$(TARGETNAME).exe"\
/INCREMENTAL:NO\
/NOLOGO\
/MANIFEST\
/MANIFESTFILE:"$(OUTDIR)\$(TARGETNAME).exe.intermediate.manifest"\
/MANIFESTUAC:"level='asInvoker' uiAccess='false'"\
/DEBUG\
/pdb:"$(OUTDIR)\$(TARGETNAME).pdb"\
/SUBSYSTEM:WINDOWS\
/OPT:REF\
/OPT:ICF\
/LTCG\
/DYNAMICBASE\
/NXCOMPAT\
/MACHINE:X86\
/ERRORREPORT:PROMPT kernel32.lib\
user32.lib\
gdi32.lib\
winspool.lib\
comdlg32.lib\
advapi32.lib\
shell32.lib\
ole32.lib\
oleaut32.lib\
uuid.lib\
odbc32.lib\
odbccp32.lib
LINK32_OBJS= \
"$(OUTDIR)\$(TARGETNAME_C).obj"\
"$(OUTDIR)\$(TARGETNAME_R).res"
# resource compiler
RFLAGS=\
/d "_UNICODE" /d "UNICODE"\
/fo"$(OUTDIR)\$(TARGETNAME_R).res"
"$(OUTDIR)\$(TARGETNAME).exe" : "$(OUTDIR)" $(LINK32_OBJS)
$(LINK32) $(LINK32_FLAGS) $(LINK32_OBJS)
.cpp{$(OUTDIR)}.obj:
$(CPP) $(CPPFLAGS) $<
.rc{$(OUTDIR)}.res:
$(RC) $(RFLAGS) $<
| TARGETNAME=Win32Project1 |
ソリューション名(プロジェクト名) 実行ファイル(*.exe)のファイル名と同じです。 環境に合わせて変更してください。 |
| TARGETNAME_C=test |
Cソースファイル(*.c/*.cpp)のファイル名 環境に合わせて変更してください。 |
| TARGETNAME_R=test |
リソースファイル(*.rc)のファイル名です。 環境に合わせて変更してください。 |
| OUTDIR=.\Release |
実行ファイルを生成するフォルダ 環境に合わせて変更してください。 |
| CPPFLAGS=・・ | コンパイルオプション |
| LINK32_FLAGS=・・・ | リンクオプション |
| RFLAGS=・・・ | リソースのオプション |
test.batを実行すれば、ビルドされ、コンパイルエラーがなければそのまま実行されます。
NMAKE : fatal error U1073: '".\Release\***.obj"' のビルド方法が指定されていません。
Cソースファイルの名前が間違っていませんか?
NMAKE : fatal error U1073: '".\Release\***.res"' のビルド方法が指定されていません。
リソースファイルの名前が間違っていませんか?
総合インデックス > Visual C++ > メイク(make)ファイル1