何とかバッチファイルでビルドできたので、次はMakeでビルドすることを確認します。
BCCDeveloperやBCCMakerはbcc32.exe用にできているので、テストには次の一行バッチファイルを使います。
"DoMake.bat"
C:\Borland\BCC102\bin\make.exe -f%1 > bccerror.txt
前回の経験からコンパイラーはbcc32c、リソースコンパイラーをbrc32として次のBCCDeveloperやBCCMakerの作るmakファイルで、コンパイラーフラグを変更してテストを実施。
#-----------------------------
# BCCMaker 1.0
# Copyright (C) 2002 by ysama
#-----------------------------
.autodepend
CC="C:\Borland\BCC102\bin\bcc32c.exe"
RC="C:\Borland\BCC102\bin\brc32.exe"
ASM="C:\nasm-2.14.02\nasm.exe"
CFLAG=-tW -w
RFLAG=-r
AFLAG=-omf
OUTDIR=-nRelease
CINCS=-I"C:\Borland\BCCForm"
TARGET="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.exe"
SRC1="C:\Users\ysama\Programing\Windows Program\WinTemplate\WinTemplate.cpp"
OBJ1="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.obj"
RC1="C:\Users\ysama\Programing\Windows Program\WinTemplate\MenuTempl.rc"
RES1="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\MenuTempl.res"
TARGET: $(TARGET)
$(TARGET): $(OBJ1) $(RES1)
$(CC) $(CFLAG) -e$(TARGET) $(OBJ1)
$(RC) $(RESINCS) $(RES1) $(TARGET)
$(OBJ1): $(SRC1)
$(CC) $(CFLAG) $(CINCS) -o$(OBJ1) -c $(SRC1)
$(RES1): $(RC1)
$(RC) $(RESINCS) $(RFLAG) -fo$(RES1) $(RC1)
次の結果出力を出して、正常にビルドが完了します。
MAKE Version 5.41 Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
"C:\Borland\BCC102\bin\bcc32c.exe" -tW -w -I"C:\Borland\BCCForm" -o"C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.obj" -c "C:\Users\ysama\Programing\Windows Program\WinTemplate\WinTemplate.cpp"
Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
C:\Users\ysama\Programing\Windows Program\WinTemplate\WinTemplate.cpp:
"C:\Borland\BCC102\bin\brc32.exe" -r -fo"C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\MenuTempl.res" "C:\Users\ysama\Programing\Windows Program\WinTemplate\MenuTempl.rc"
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
"C:\Borland\BCC102\bin\bcc32c.exe" -tW -w -e"C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.exe" "C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.obj"
Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
Turbo Incremental Link 6.91 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
"C:\Borland\BCC102\bin\brc32.exe" "C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\MenuTempl.res" "C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.exe"
Turbo Incremental Link 6.91 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
従って、bcc32cを使う場合、コンパイルフラグを"-tW(コンソールなら"-tC")"に警告出力の"-w"を付けてビルドすればBccdeveloperやBCCMakerで十分ビルド可能ということになります。(Bccdeveloperはファイルを開くダイアログでは"bcc32.exe"しか表示しないので、手入力することが必要です。)
最後にbcc102から添付されているMicrosoftのrc.exeでもテストをします。
rc.exeはHelpファイルによるとオプションの引数が次の通りとなってます。
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: rc [options] .RC input file
Switches:
/r Emit .RES file (optional)
(省略)
/fo Rename .RES file
(省略)Flags may be either upper or lower case
ということでMakファイルは次の通り。
#-----------------------------
# BCCMaker 1.0
# Copyright (C) 2002 by ysama
#-----------------------------
.autodepend
CC="C:\Borland\BCC102\bin\bcc32c.exe"
RC="C:\Borland\BCC102\bin\rc.exe" #ここを変更
ASM="C:\nasm-2.14.02\nasm.exe"
CFLAG=-tW -w
RFLAG=/r #ここを変更
AFLAG=-omf
OUTDIR=-nRelease
CINCS=-I"C:\Borland\BCCForm"
TARGET="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.exe"
SRC1="C:\Users\ysama\Programing\Windows Program\WinTemplate\WinTemplate.cpp"
OBJ1="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.obj"
RC1="C:\Users\ysama\Programing\Windows Program\WinTemplate\MenuTempl.rc"
RES1="C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\MenuTempl.res"
TARGET: $(TARGET)
$(TARGET): $(OBJ1) $(RES1)
$(CC) $(CFLAG) -e$(TARGET) $(OBJ1)
$(RC) $(RESINCS) $(RES1) $(TARGET)
$(OBJ1): $(SRC1)
$(CC) $(CFLAG) $(CINCS) -o$(OBJ1) -c $(SRC1)
$(RES1): $(RC1)
$(RC) $(RESINCS) $(RFLAG) /fo$(RES1) $(RC1) #ここを変更
これでビルドすると、実行ファイルができますがメニューがなく、結果ファイルには次のエラーが出ます。
(コンパイラー系は問題なし)
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
fatal error RC1107: invalid usage; use RC /? for Help
** error 1 ** deleting "C:\Users\ysama\Programing\Windows Program\WinTemplate\Release\WinTemplate.exe"
おーい、何がまずいんだよぉ?
補足:リソースのところを
$(RES1): $(RC1)
$(RC) $(RC1)
としてビルドしても結果は同じでした。
ということで次回。