-
February 8th, 2006, 11:57 AM
#1
makefile output directory
I'm working with Borland C++ 4.02 compiler / IDE for a 16-bit dos project and it's been a while since I've done a makefile.
Borland has generated a makefile for me, but I was hoping it was possible to change the directory where the obj files and executable are written to. Anyone know how?
Thanks,
Eric
Code:
#
#
# Borland C++ IDE generated makefile
#
.AUTODEPEND
#
# Borland C++ tools
#
IMPLIB = Implib
BCCDOS = Bcc +BccDos.cfg
TLINK = TLink
TLIB = TLib
TASM = Tasm
#
# IDE macros
#
#
# Options
#
IDE_LFLAGSDOS = -LC:\BC4\LIB
IDE_BFLAGS =
LLATDOS_mcmdexe = -c -Tde
RLATDOS_mcmdexe =
BLATDOS_mcmdexe =
CNIEAT_mcmdexe = -IC:\BC4\INCLUDE -D
LNIEAT_mcmdexe = -m
LEAT_mcmdexe = $(LLATDOS_mcmdexe)
REAT_mcmdexe = $(RLATDOS_mcmdexe)
BEAT_mcmdexe = $(BLATDOS_mcmdexe)
#
# Dependency List
#
Dep_mcm = \
mcm.exe
mcm : BccDos.cfg $(Dep_mcm)
echo MakeNode
Dep_mcmdexe = \
squeue.obj\
ddu_ser.obj\
diag.obj\
rxrout.obj\
vfd_ser.obj\
common.obj\
control.obj\
ddu.obj\
io.obj\
mcm.obj\
menus.obj\
pccomms.obj\
pqueue.obj\
table.obj\
vfd_init.obj
mcm.exe : $(Dep_mcmdexe)
$(TLINK) @&&|
/v $(IDE_LFLAGSDOS) $(LEAT_mcmdexe) $(LNIEAT_mcmdexe) +
C:\BC4\LIB\c0l.obj+
squeue.obj+
ddu_ser.obj+
diag.obj+
rxrout.obj+
vfd_ser.obj+
common.obj+
control.obj+
ddu.obj+
io.obj+
mcm.obj+
menus.obj+
pccomms.obj+
pqueue.obj+
table.obj+
vfd_init.obj
$<,$*
C:\BC4\LIB\bidsl.lib+
C:\BC4\LIB\emu.lib+
C:\BC4\LIB\mathl.lib+
C:\BC4\LIB\cl.lib
|
squeue.obj : squeue.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ squeue.cpp
|
ddu_ser.obj : ddu_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ ddu_ser.cpp
|
diag.obj : diag.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ diag.cpp
|
rxrout.obj : rxrout.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ rxrout.cpp
|
vfd_ser.obj : vfd_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ vfd_ser.cpp
|
common.obj : common.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ common.cpp
|
control.obj : control.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ control.cpp
|
ddu.obj : ddu.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ ddu.cpp
|
io.obj : io.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ io.cpp
|
mcm.obj : mcm.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ mcm.cpp
|
menus.obj : menus.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ menus.cpp
|
pccomms.obj : pccomms.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ pccomms.cpp
|
pqueue.obj : pqueue.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ pqueue.cpp
|
table.obj : table.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ table.cpp
|
vfd_init.obj : vfd_init.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$@ vfd_init.cpp
|
# Compiler configuration file
BccDos.cfg :
Copy &&|
-W-
-R
-v
-vi
-H
-H=mcm.csm
-ml
-f
-Ot
| $@
-
February 8th, 2006, 02:16 PM
#2
Re: makefile output directory
You can replace "-o$@" with "-o$(DESTINATION_PATH)\$." for each rule of object file.
And, for the linking command, replace "$*" with "$(DESTINATION_PATH)\$."
You must, of course, define the DESTINATION_PATH macro in the makefile.
Something like that:
Code:
#
#
# Borland C++ IDE generated makefile
#
.AUTODEPEND
#
# Borland C++ tools
#
IMPLIB = Implib
BCCDOS = Bcc +BccDos.cfg
TLINK = TLink
TLIB = TLib
TASM = Tasm
#
# IDE macros
#
#
# Options
#
IDE_LFLAGSDOS = -LC:\BC4\LIB
IDE_BFLAGS =
LLATDOS_mcmdexe = -c -Tde
RLATDOS_mcmdexe =
BLATDOS_mcmdexe =
CNIEAT_mcmdexe = -IC:\BC4\INCLUDE -D
LNIEAT_mcmdexe = -m
LEAT_mcmdexe = $(LLATDOS_mcmdexe)
REAT_mcmdexe = $(RLATDOS_mcmdexe)
BEAT_mcmdexe = $(BLATDOS_mcmdexe)
DESTINATION_PATH= c:\yourpath\here
#
# Dependency List
#
Dep_mcm = \
mcm.exe
mcm : BccDos.cfg $(Dep_mcm)
echo MakeNode
Dep_mcmdexe = \
squeue.obj\
ddu_ser.obj\
diag.obj\
rxrout.obj\
vfd_ser.obj\
common.obj\
control.obj\
ddu.obj\
io.obj\
mcm.obj\
menus.obj\
pccomms.obj\
pqueue.obj\
table.obj\
vfd_init.obj
mcm.exe : $(Dep_mcmdexe)
$(TLINK) @&&|
/v $(IDE_LFLAGSDOS) $(LEAT_mcmdexe) $(LNIEAT_mcmdexe) +
C:\BC4\LIB\c0l.obj+
squeue.obj+
ddu_ser.obj+
diag.obj+
rxrout.obj+
vfd_ser.obj+
common.obj+
control.obj+
ddu.obj+
io.obj+
mcm.obj+
menus.obj+
pccomms.obj+
pqueue.obj+
table.obj+
vfd_init.obj
$<,$(DESTINATION_PATH)\$.
C:\BC4\LIB\bidsl.lib+
C:\BC4\LIB\emu.lib+
C:\BC4\LIB\mathl.lib+
C:\BC4\LIB\cl.lib
|
squeue.obj : squeue.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. squeue.cpp
|
ddu_ser.obj : ddu_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. ddu_ser.cpp
|
diag.obj : diag.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. diag.cpp
|
rxrout.obj : rxrout.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. rxrout.cpp
|
vfd_ser.obj : vfd_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. vfd_ser.cpp
|
common.obj : common.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. common.cpp
|
control.obj : control.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. control.cpp
|
ddu.obj : ddu.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. ddu.cpp
|
io.obj : io.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. io.cpp
|
mcm.obj : mcm.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. mcm.cpp
|
menus.obj : menus.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. menus.cpp
|
pccomms.obj : pccomms.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. pccomms.cpp
|
pqueue.obj : pqueue.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. pqueue.cpp
|
table.obj : table.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. table.cpp
|
vfd_init.obj : vfd_init.cpp
$(BCCDOS) -c @&&|
$(CEAT_mcmdexe) $(CNIEAT_mcmdexe) -o$(DESTINATION_PATH)\$. vfd_init.cpp
|
# Compiler configuration file
BccDos.cfg :
Copy &&|
-W-
-R
-v
-vi
-H
-H=mcm.csm
-ml
-f
-Ot
| $@
It could be good to define an implicit rule .cpp.obj
"inherit to be reused by code that uses the base class, not to reuse base class code", Sutter and Alexandrescu, C++ Coding Standards.
Club of lovers of the C++ typecasts cute syntax: Only recorded member.
Out of memory happens! Handle it properly!
Say no to g_new()!
-
February 13th, 2006, 10:56 AM
#3
Re: makefile output directory
It worked for the most part.
The linker is bombing out now because the obj files are in the new directory, I believe. It is also not detecting that the obj files exist... keeps rebuilding all of them.
What do I need to change?
Thanks,
Eric
Code:
MAKE Version 3.7 Copyright (c) 1987, 1994 Borland International
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
squeue.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
ddu_ser.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
diag.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
rxrout.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
vfd_ser.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
common.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
system.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
control.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
ddu.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
io.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
mcm.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
menus.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
pccomms.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
pqueue.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
table.cpp:
Loaded pre-compiled headers.
Borland C++ Version 4.02 Copyright (c) 1994 Borland International
vfd_init.cpp:
Loaded pre-compiled headers.
Turbo Link Version 6.10 Copyright (c) 1992, 1993, 1994 Borland International
Fatal: Invalid map filename: c:\projects\oldenb~1\source\mcm\releas~1\mcm.exe
** error 2 ** deleting mcm.exe
-
February 13th, 2006, 05:35 PM
#4
Re: makefile output directory
I haven't worked with BCB 4.x but the later versions allow you to change the immediate output in the IDE. Modifying the generated makefile may not be a good idea.
Is there no setting to define the location of the immediate output in BCB 4?
-
February 14th, 2006, 03:36 PM
#5
Re: makefile output directory
You were right... I thought I looked; Guess I didn't look hard enough.
Here is the resultant makefile that borland generated.
Thanks!
Eric
Code:
#
# Borland C++ IDE generated makefile
#
.AUTODEPEND
#
# Borland C++ tools
#
IMPLIB = Implib
BCCDOS = Bcc +BccDos.cfg
TLINK = TLink
TLIB = TLib
TASM = Tasm
#
# IDE macros
#
#
# Options
#
IDE_LFLAGSDOS = -LC:\BC4\LIB
IDE_BFLAGS =
LLATDOS_OUTPUT16bmcmdexe = -c -Tde
RLATDOS_OUTPUT16bmcmdexe =
BLATDOS_OUTPUT16bmcmdexe =
CNIEAT_OUTPUT16bmcmdexe = -IC:\BC4\INCLUDE -D
LNIEAT_OUTPUT16bmcmdexe = -m
LEAT_OUTPUT16bmcmdexe = $(LLATDOS_OUTPUT16bmcmdexe)
REAT_OUTPUT16bmcmdexe = $(RLATDOS_OUTPUT16bmcmdexe)
BEAT_OUTPUT16bmcmdexe = $(BLATDOS_OUTPUT16bmcmdexe)
#
# Dependency List
#
Dep_mcm = \
OUTPUT16\mcm.exe
mcm : BccDos.cfg $(Dep_mcm)
echo MakeNode
Dep_OUTPUT16bmcmdexe = \
OUTPUT16\system.obj\
OUTPUT16\squeue.obj\
OUTPUT16\ddu_ser.obj\
OUTPUT16\diag.obj\
OUTPUT16\rxrout.obj\
OUTPUT16\vfd_ser.obj\
OUTPUT16\common.obj\
OUTPUT16\control.obj\
OUTPUT16\ddu.obj\
OUTPUT16\io.obj\
OUTPUT16\mcm.obj\
OUTPUT16\menus.obj\
OUTPUT16\pccomms.obj\
OUTPUT16\pqueue.obj\
OUTPUT16\table.obj\
OUTPUT16\vfd_init.obj
OUTPUT16\mcm.exe : $(Dep_OUTPUT16bmcmdexe)
$(TLINK) @&&|
/v $(IDE_LFLAGSDOS) $(LEAT_OUTPUT16bmcmdexe) $(LNIEAT_OUTPUT16bmcmdexe) +
C:\BC4\LIB\c0l.obj+
OUTPUT16\system.obj+
OUTPUT16\squeue.obj+
OUTPUT16\ddu_ser.obj+
OUTPUT16\diag.obj+
OUTPUT16\rxrout.obj+
OUTPUT16\vfd_ser.obj+
OUTPUT16\common.obj+
OUTPUT16\control.obj+
OUTPUT16\ddu.obj+
OUTPUT16\io.obj+
OUTPUT16\mcm.obj+
OUTPUT16\menus.obj+
OUTPUT16\pccomms.obj+
OUTPUT16\pqueue.obj+
OUTPUT16\table.obj+
OUTPUT16\vfd_init.obj
$<,$*
C:\BC4\LIB\bidsl.lib+
C:\BC4\LIB\emu.lib+
C:\BC4\LIB\mathl.lib+
C:\BC4\LIB\cl.lib
|
OUTPUT16\system.obj : system.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ system.cpp
|
OUTPUT16\squeue.obj : squeue.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ squeue.cpp
|
OUTPUT16\ddu_ser.obj : ddu_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ ddu_ser.cpp
|
OUTPUT16\diag.obj : diag.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ diag.cpp
|
OUTPUT16\rxrout.obj : rxrout.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ rxrout.cpp
|
OUTPUT16\vfd_ser.obj : vfd_ser.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ vfd_ser.cpp
|
OUTPUT16\common.obj : common.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ common.cpp
|
OUTPUT16\control.obj : control.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ control.cpp
|
OUTPUT16\ddu.obj : ddu.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ ddu.cpp
|
OUTPUT16\io.obj : io.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ io.cpp
|
OUTPUT16\mcm.obj : mcm.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ mcm.cpp
|
OUTPUT16\menus.obj : menus.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ menus.cpp
|
OUTPUT16\pccomms.obj : pccomms.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ pccomms.cpp
|
OUTPUT16\pqueue.obj : pqueue.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ pqueue.cpp
|
OUTPUT16\table.obj : table.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ table.cpp
|
OUTPUT16\vfd_init.obj : vfd_init.cpp
$(BCCDOS) -c @&&|
$(CEAT_OUTPUT16bmcmdexe) $(CNIEAT_OUTPUT16bmcmdexe) -o$@ vfd_init.cpp
|
# Compiler configuration file
BccDos.cfg :
Copy &&|
-W-
-R
-v
-vi
-H
-H=mcm.csm
-ml
-f
-Ot
| $@
-
February 14th, 2006, 05:51 PM
#6
Re: makefile output directory
Great,
Glad it worked.
Cheers
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|