Page 1 of 1

Archivo de compilacion .mak para Visual Studio

Posted: Fri Jan 17, 2025 9:08 pm
by Compuin
Saludos,

Alguien utiliza archivos .mak para compilar con Visual Studio?

Necesito hacerle una consulta

Gracias de antemano

Re: Archivo de compilacion .mak para Visual Studio

Posted: Fri Jan 17, 2025 11:20 pm
by Antonio Linares
Que necesitas ?

Re: Archivo de compilacion .mak para Visual Studio

Posted: Fri Jan 17, 2025 11:26 pm
by Compuin
Hola maestro,

Necesito crearlo indicándole que los .prg y los .c están alojados en carpetas tales como PRG y C y no en el mismo directorio del ejecutable

Re: Archivo de compilacion .mak para Visual Studio

Posted: Fri Jan 17, 2025 11:45 pm
by Antonio Linares
A ver si te sirve esto:

Code: Select all | Expand

# Variables de rutas
PRG_PATH = src\prg
C_PATH = src\c
OBJ_PATH = obj

# Variables para los compiladores y banderas
CC = cl
CFLAGS = /I $(PRG_PATH) /I $(C_PATH) /nologo

# Archivos fuente y objetivos
PRG_FILES = $(PRG_PATH)\file1.prg $(PRG_PATH)\file2.prg
C_FILES = $(C_PATH)\main.c $(C_PATH)\utils.c
OBJ_FILES = $(OBJ_PATH)\main.obj $(OBJ_PATH)\utils.obj

# Regla para construir el programa
all: program.exe

program.exe: $(OBJ_FILES)
    link /out:$@ $^

# Regla para compilar archivos .c
$(OBJ_PATH)\%.obj: $(C_PATH)\%.c
    $(CC) $(CFLAGS) /c $< /Fo$@

# Limpieza
clean:
    del /Q $(OBJ_PATH)\*.obj program.exe

Re: Archivo de compilacion .mak para Visual Studio

Posted: Fri Jan 17, 2025 11:54 pm
by Compuin
Gracias maestro, lo probaré

Re: Archivo de compilacion .mak para Visual Studio

Posted: Sat Jan 18, 2025 1:16 am
by Compuin
me da este error

Code: Select all | Expand

Microsoft (R) Program Maintenance Utility Version 14.30.30706.0
Copyright (C) Microsoft Corporation.  All rights reserved.

tutor04.mak(77) : fatal error U1001: syntax error : illegal character '^' in macro
Stop.

C:\vs2022_make>Clinica32.exe
'Clinica32.exe' is not recognized as an internal or external command,
operable program or batch file.

C:\vs2022_make>
Y este es el .mak

Code: Select all | Expand

#Microsoft VS2019 make sample, (c) FiveTech Software 2022

HBDIR=c:\harbour_msvc
FWDIR=c:\fwh
VCDIR=C:\vc2022\bin32
SDKDIR=C:\vc2022\bin32

# Variables de rutas
PRG_PATH = prg
C_PATH = c
OBJ_PATH = obj

# Variables para los compiladores y banderas
CC = cl
CFLAGS = /I $(PRG_PATH) /I $(C_PATH) /nologo

# Archivos fuente y objetivos
PRG_FILES = $(PRG_PATH)\Clinica32.prg $(PRG_PATH)\Clinica32Win.prg $(PRG_PATH)\TPublic.prg
C_FILES = $(C_PATH)\Clinica32.c $(C_PATH)\Clinica32Win.c  $(C_PATH)\TPublic.c
OBJ_FILES = $(OBJ_PATH)\Clinica32.obj $(OBJ_PATH)\Clinica32Win.obj $(OBJ_PATH)\TPublic.obj

# Regla para construir el programa
all: program.exe   

# link /OUT:Clinica32.exe @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:msvcrt
program.exe: $(OBJ_FILES)
   echo $(FWDIR)\lib\FiveH32.lib $(FWDIR)\lib\FiveHC32.lib >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbrtl.lib    >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbvm.lib     >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\gtgui.lib    >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hblang.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbmacro.lib  >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbrdd.lib    >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\rddntx.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\rddcdx.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\rddfpt.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbsix.lib    >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbdebug.lib  >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbcommon.lib >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbpp.lib     >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbwin.lib    >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbcplr.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\xhb.lib      >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbpcre.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbct.lib     >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbcpage.lib  >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbzlib.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\png.lib      >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbziparc.lib >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\hbmzip.lib   >> msvc.tmp
   echo $(HBDIR)\lib\win\msvc\minizip.lib  >> msvc.tmp

   echo kernel32.lib  >> msvc.tmp
   echo user32.lib    >> msvc.tmp
   echo gdi32.lib     >> msvc.tmp
   echo winspool.lib  >> msvc.tmp
   echo comctl32.lib  >> msvc.tmp
   echo comdlg32.lib  >> msvc.tmp
   echo advapi32.lib  >> msvc.tmp
   echo shell32.lib   >> msvc.tmp
   echo ole32.lib     >> msvc.tmp
   echo oleaut32.lib  >> msvc.tmp
   echo uuid.lib      >> msvc.tmp
   echo odbc32.lib    >> msvc.tmp
   echo odbccp32.lib  >> msvc.tmp
   echo iphlpapi.lib  >> msvc.tmp
   echo mpr.lib       >> msvc.tmp
   echo version.lib   >> msvc.tmp
   echo wsock32.lib   >> msvc.tmp
   echo msimg32.lib   >> msvc.tmp
   echo oledlg.lib    >> msvc.tmp
   echo psapi.lib     >> msvc.tmp
   echo gdiplus.lib   >> msvc.tmp
   echo winmm.lib     >> msvc.tmp
   echo ws2_32.lib    >> msvc.tmp
   
   link /out:$@ $^
	
# Regla para compilar archivos .c
$(OBJ_PATH)\%.obj: $(C_PATH)\%.c
$(CC) $(CFLAGS) /c $< /Fo$@