Funciones propias en una lib (Solucionado)

User avatar
jvtecheto
Posts: 357
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Funciones propias en una lib

Post by jvtecheto »

Compuin wrote:Asi es,

Logro crear la libreria, mil gracias

En cuanto a los avisos? Solo ignorarlos ? O se pueden apagar ? No causara que la lib falle ?
Hola Compuin.

Perdona pero tambien me interesa el tema y con _ al final no logro conocer el fichero .mak que has utilizado para crear la libreria, puedes publicarlo asi como e. .bat?

Y una vez creado donde se añade al fichero .mak para crear el ejecutable.?

Gracias amigo.

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Funciones propias en una lib

Post by Compuin »

brakaman wrote:
Compuin wrote:Asi es,

Logro crear la libreria, mil gracias

En cuanto a los avisos? Solo ignorarlos ? O se pueden apagar ? No causara que la lib falle ?
Hola Compuin.

Perdona pero tambien me interesa el tema y con _ al final no logro conocer el fichero .mak que has utilizado para crear la libreria, puedes publicarlo asi como e. .bat?

Y una vez creado donde se añade al fichero .mak para crear el ejecutable.?

Gracias amigo.

Jose.

Hola brakaman, aqui te va

Para el bat, yo lo llamo go.bat

Code: Select all

@echo off
REM -
REM by Thefull for Front-End Release 0.5
REM -
IF NOT EXIST .\obj MD .\obj
IF NOT EXIST .\lib MD .\lib

:BUILD

   C:\BCC74\BIN\MAKE  -m -fmylib.mak > make.log
   if errorlevel 1 goto BUILD_ERR

:BUILD_OK
   rem Front-End send path + exe filename
   if exist %2.exe %2.exe 
   goto EXIT

:BUILD_ERR
   notepad make.log
   goto EXIT

:EXIT

rem time de compilado 1:21 / 1:22 / 1:46

Y este es el .mak, yo lo llamo mylib.mak

Code: Select all

# Directorios Principales ####################################################

FIVEWIN_DIR   = \Fwh1901
HARBOUR_DIR   = \Harbour32
BORLANDC_DIR  = \Bcc74

# Make directives ############################################################

.swap
.suffixes: .prg

# Application directories & filenames ########################################

LIB_NAME         = mylib    # (Your LIB name without extension)
LIB_PRG_DIR      = source   # .
LIB_OBJ_DIR      = obj      # (create the app\obj directory first)
LIB_INCLUDE_DIR  = include  # .
LIB_LIB_DIR      = lib      # $(LIB_PRG_DIR)

LIB_LIB  = $(LIB_LIB_DIR)\$(LIB_NAME).lib


# Paths for dependent files ##################################################

.path.c   = $(LIB_PRG_DIR)
.path.prg = $(LIB_PRG_DIR)
.path.obj = $(LIB_OBJ_DIR)

# Application PRG and C files (your PRG/C files go here) #####################

LIB_PRG_LIST = \
#SButton
   TSButton.prg \
   TSBar.prg \
   TSLines.prg \
   TSRadio.prg \
   TSTSay.prg \
   TSGradie.prg \
   BPaint.c \
#BtnGet
   Btnget.prg \
   Btndown.prg \
   Getbtn.c \
#TbmpGet
   TBmpGet.prg   \
  
# Contruction of the rest dependency lists ###################################

LIB_PRGS = $(LIB_PRG_LIST)

TMP_001  = $(LIB_PRG_LIST:.prg=.obj)
LIB_OBJ  = $(TMP_001:.c=.obj)

LIB_TMP0 = OBJ\$(LIB_OBJ:.obj=.obj +OBJ\)
LIB_TMP1 = $(LIB_TMP0: =)
LIB_TMP2 = $(LIB_TMP1:.obj=.obj )_
LIB_TMP3 = +$(LIB_TMP2:+OBJ\_=)


# Fivewin directories ########################################################

FIVEWIN_INCLUDE_DIR = $(FIVEWIN_DIR)\include

# Harbour directories & flags ################################################

HARBOUR_INCLUDE_DIR = $(HARBOUR_DIR)\include
HARBOUR_EXE_DIR     = $(HARBOUR_DIR)\bin
HARBOUR_FLAGS       = -i$(LIB_INCLUDE_DIR);$(FIVEWIN_INCLUDE_DIR);$(HARBOUR_INCLUDE_DIR) -n -m -w -es2 -gc0
HARBOUR_EXE         = $(HARBOUR_EXE_DIR)\harbour.exe

# Borlanc directories & flags ################################################

BORLANDC_INCLUDE_DIR = $(BORLANDC_DIR)\include;$(FIVEWIN_INCLUDE_DIR)
BORLANDC_EXE_DIR     = $(BORLANDC_DIR)\bin
BORLANDC_LIB_DIR     = $(BORLANDC_DIR)\lib
BORLANDC_COMP_FLAGS  = -M -D__HARBOUR__ -c -O2 -I$(HARBOUR_INCLUDE_DIR);$(BORLANDC_INCLUDE_DIR) -D__HARBOUR__;HB_API_MACROS;HB_FM_STATISTICS_OFF
BORLANDC_COMP_EXE    = $(BORLANDC_EXE_DIR)\bcc32.exe
BORLANDC_TLIB_EXE    = $(BORLANDC_EXE_DIR)\tlib.exe

# Dependencies ###############################################################

all: $(LIB_OBJ) $(LIB_PRGS) $(LIB_LIB)

# Implicit Rules #############################################################

.prg.obj:
   @$(HARBOUR_EXE) $(HARBOUR_FLAGS) $** -o$(LIB_OBJ_DIR)\temp.c
   @$(BORLANDC_COMP_EXE) $(BORLANDC_COMP_FLAGS) -o$@ $(LIB_OBJ_DIR)\temp.c
   @if exist $(LIB_OBJ_DIR)\temp.c $(DEL) $(LIB_OBJ_DIR)\temp.c

.c.obj:
   @$(BORLANDC_COMP_EXE) $(BORLANDC_COMP_FLAGS) -o$@ $**


# Explicit Rules #############################################################

$(LIB_LIB) :: $(LIB_OBJ)
  @if exist $(LIB_LIB) $(DEL) $(LIB_LIB)
  @$(BORLANDC_TLIB_EXE) $(LIB_LIB) /P32 $(LIB_TMP3)
 
Espero ayude
User avatar
jvtecheto
Posts: 357
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Funciones propias en una lib (Solucionado)

Post by jvtecheto »

Correcto.

Funciona.

Muchisimassss, gracias.

Jose
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
User avatar
jvtecheto
Posts: 357
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Funciones propias en una lib

Post by jvtecheto »

Compuin wrote:
brakaman wrote:
Compuin wrote:Asi es,

Logro crear la libreria, mil gracias

En cuanto a los avisos? Solo ignorarlos ? O se pueden apagar ? No causara que la lib falle ?
Hola Compuin.

Perdona pero tambien me interesa el tema y con _ al final no logro conocer el fichero .mak que has utilizado para crear la libreria, puedes publicarlo asi como e. .bat?

Y una vez creado donde se añade al fichero .mak para crear el ejecutable.?

Gracias amigo.

Jose.

Hola brakaman, aqui te va

Para el bat, yo lo llamo go.bat

Code: Select all

@echo off
REM -
REM by Thefull for Front-End Release 0.5
REM -
IF NOT EXIST .\obj MD .\obj
IF NOT EXIST .\lib MD .\lib

:BUILD

   C:\BCC74\BIN\MAKE  -m -fmylib.mak > make.log
   if errorlevel 1 goto BUILD_ERR

:BUILD_OK
   rem Front-End send path + exe filename
   if exist %2.exe %2.exe 
   goto EXIT

:BUILD_ERR
   notepad make.log
   goto EXIT

:EXIT

rem time de compilado 1:21 / 1:22 / 1:46

Y este es el .mak, yo lo llamo mylib.mak

Code: Select all

# Directorios Principales ####################################################

FIVEWIN_DIR   = \Fwh1901
HARBOUR_DIR   = \Harbour32
BORLANDC_DIR  = \Bcc74

# Make directives ############################################################

.swap
.suffixes: .prg

# Application directories & filenames ########################################

LIB_NAME         = mylib    # (Your LIB name without extension)
LIB_PRG_DIR      = source   # .
LIB_OBJ_DIR      = obj      # (create the app\obj directory first)
LIB_INCLUDE_DIR  = include  # .
LIB_LIB_DIR      = lib      # $(LIB_PRG_DIR)

LIB_LIB  = $(LIB_LIB_DIR)\$(LIB_NAME).lib


# Paths for dependent files ##################################################

.path.c   = $(LIB_PRG_DIR)
.path.prg = $(LIB_PRG_DIR)
.path.obj = $(LIB_OBJ_DIR)

# Application PRG and C files (your PRG/C files go here) #####################

LIB_PRG_LIST = \
#SButton
   TSButton.prg \
   TSBar.prg \
   TSLines.prg \
   TSRadio.prg \
   TSTSay.prg \
   TSGradie.prg \
   BPaint.c \
#BtnGet
   Btnget.prg \
   Btndown.prg \
   Getbtn.c \
#TbmpGet
   TBmpGet.prg   \
  
# Contruction of the rest dependency lists ###################################

LIB_PRGS = $(LIB_PRG_LIST)

TMP_001  = $(LIB_PRG_LIST:.prg=.obj)
LIB_OBJ  = $(TMP_001:.c=.obj)

LIB_TMP0 = OBJ\$(LIB_OBJ:.obj=.obj +OBJ\)
LIB_TMP1 = $(LIB_TMP0: =)
LIB_TMP2 = $(LIB_TMP1:.obj=.obj )_
LIB_TMP3 = +$(LIB_TMP2:+OBJ\_=)


# Fivewin directories ########################################################

FIVEWIN_INCLUDE_DIR = $(FIVEWIN_DIR)\include

# Harbour directories & flags ################################################

HARBOUR_INCLUDE_DIR = $(HARBOUR_DIR)\include
HARBOUR_EXE_DIR     = $(HARBOUR_DIR)\bin
HARBOUR_FLAGS       = -i$(LIB_INCLUDE_DIR);$(FIVEWIN_INCLUDE_DIR);$(HARBOUR_INCLUDE_DIR) -n -m -w -es2 -gc0
HARBOUR_EXE         = $(HARBOUR_EXE_DIR)\harbour.exe

# Borlanc directories & flags ################################################

BORLANDC_INCLUDE_DIR = $(BORLANDC_DIR)\include;$(FIVEWIN_INCLUDE_DIR)
BORLANDC_EXE_DIR     = $(BORLANDC_DIR)\bin
BORLANDC_LIB_DIR     = $(BORLANDC_DIR)\lib
BORLANDC_COMP_FLAGS  = -M -D__HARBOUR__ -c -O2 -I$(HARBOUR_INCLUDE_DIR);$(BORLANDC_INCLUDE_DIR) -D__HARBOUR__;HB_API_MACROS;HB_FM_STATISTICS_OFF
BORLANDC_COMP_EXE    = $(BORLANDC_EXE_DIR)\bcc32.exe
BORLANDC_TLIB_EXE    = $(BORLANDC_EXE_DIR)\tlib.exe

# Dependencies ###############################################################

all: $(LIB_OBJ) $(LIB_PRGS) $(LIB_LIB)

# Implicit Rules #############################################################

.prg.obj:
   @$(HARBOUR_EXE) $(HARBOUR_FLAGS) $** -o$(LIB_OBJ_DIR)\temp.c
   @$(BORLANDC_COMP_EXE) $(BORLANDC_COMP_FLAGS) -o$@ $(LIB_OBJ_DIR)\temp.c
   @if exist $(LIB_OBJ_DIR)\temp.c $(DEL) $(LIB_OBJ_DIR)\temp.c

.c.obj:
   @$(BORLANDC_COMP_EXE) $(BORLANDC_COMP_FLAGS) -o$@ $**


# Explicit Rules #############################################################

$(LIB_LIB) :: $(LIB_OBJ)
  @if exist $(LIB_LIB) $(DEL) $(LIB_LIB)
  @$(BORLANDC_TLIB_EXE) $(LIB_LIB) /P32 $(LIB_TMP3)
 
Espero ayude
Hola Compuin :

Te dije que la libreria funciona bien y es cierto pero siempre que en la carpeta obj tengas ya generados los ficheros *.obj y *.c , prueba a borrarlos e intenta generar la libreria desde cero, por lo menos a mi no me
funciona , me he dado cuenta ahora que he intentado construirla cambiando varios ficheros fuentes.

Alguien sabe las correcciones para construir la libreria desde cero.

Gracias a todos.

Saludos.

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
Post Reply