PDA

View Full Version : [C] Da Makefile a progetto


salvodel
16-11-2008, 16:33
Salva a tutti, vorrei chiedervi un aiutino su come passare da un Makefile gia esistente ad un "progetto" realizzato con qualsiasi programma. In particolare il Makefile compila anche delle librerie; come posso "allegare" queste librerie nel file project dove invece io vorrei mettere solo il programma mio? Le librerie non vengono modificate e di conseguenza non ho l'esigenza di doverle ricompilare ogni volta.

PS
Il tutto nasce dal desiderio sfruttare "meglio" le comodità di IDE fornite da MSV o Eclipse.
Grazie

cionci
16-11-2008, 17:12
Se le librerie non le devi ricompilare basta linkarle dalle opzioni del progetto. Solitamente ci sono delle opzioni relative al linker, basta mettere il percorso del file .lib o .a

salvodel
16-11-2008, 19:17
Grazie cionci, adesso inoltre dovrei aggiungere i file obj. Ho cercato su internet è l'unica cosa che ho trovato è stata quella di fare(con VisualStudio) add existing item. Sai darmi qualche ulteriore aiuto.
Ti posto il Makefile originale e ti dico le cose che credo siano necessarie per far girare il file lmdemo, cioè quello che poi diventerà il mio main:

lm.obj Axb.obj misc.obj lmlec.obj lmbc.obj lmblec.obj
levmar.lib
Adesso se lancio la compilazione mi trova un errore nel main(error C2440: '=' : cannot convert from 'void *' to 'double *')
mentre se faccio con nmake va tutto liscio. Cosa mi sto dimenticando?
Grazie

#
# MS Visual C Makefile for Levenberg - Marquardt minimization
# Under Unix/Linux, use Makefile for GCC
#
# At the command prompt, type
# nmake /f Makefile.vc
#
# NOTE: To use this, you must have MSVC installed and properly
# configured for command line use (you might need to run VCVARS32.BAT
# included with your copy of MSVC). Another option is to use the
# free MSVC toolkit from http://msdn.microsoft.com/visualc/vctoolkit2003/
#

MAKE=nmake /nologo
CC=cl /nologo
CONFIGFLAGS=#/ULINSOLVERS_RETAIN_MEMORY

CFLAGS=$(CONFIGFLAGS) /I. /MD /W3 /EHsc /O2 $(SPOPTFLAGS) # /Wall
LAPACKLIBS_PATH=C:\src\lib
LDFLAGS=/link /subsystem:console /opt:ref /libpath:$(LAPACKLIBS_PATH) /libpath:.
LIBOBJS=lm.obj Axb.obj misc.obj lmlec.obj lmbc.obj lmblec.obj
LIBSRCS=lm.c Axb.c misc.c lmlec.c lmbc.c lmblec.c
DEMOBJS=lmdemo.obj
DEMOSRCS=lmdemo.c
AR=lib /nologo

# comment the following line if you are not using LAPACK
#LAPACKLIBS=clapack.lib blas.lib libF77.lib libI77.lib(non ho le Lapack)

LIBS=levmar.lib $(LAPACKLIBS)

all: levmar.lib lmdemo.exe

levmar.lib: $(LIBOBJS)
$(AR) /out:levmar.lib $(LIBOBJS)

lmdemo.exe: $(DEMOBJS) levmar.lib
$(CC) $(DEMOBJS) $(LDFLAGS) /out:lmdemo.exe $(LIBS)

lm.obj: lm.c lm_core.c lm.h misc.h compiler.h
Axb.obj: Axb.c Axb_core.c lm.h misc.h
misc.obj: misc.c misc_core.c lm.h misc.h
lmlec.obj: lmlec.c lmlec_core.c lm.h misc.h
lmbc.obj: lmbc.c lmbc_core.c lm.h misc.h compiler.h
lmblec.obj: lmblec.c lmblec_core.c lm.h misc.h

lmdemo.obj: lm.h

clean:
-del $(LIBOBJS) $(DEMOBJS)

cleanall: clean
-del lmdemo.exe
-del levmar.lib

cionci
16-11-2008, 23:29
Non ho Visual C++ fra le mani, non posso aiutarti.

salvodel
17-11-2008, 17:28
Non ho Visual C++ fra le mani, non posso aiutarti.

E se utilizzassi un'altra IDE riusciresti a darmi qualche dritta?:ave:
Grazie