makefile => VC6

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
궁금한게 많아요..

makefile => VC6

Post by 궁금한게 많아요.. »

makefile을 분석해서 VC6로 컴파일 할려고 하는데..어렵네요...

방법을 가르쳐 주실수 있는지..

Code: Select all



PLATFORM=WIN32
PPLATFORM=P$(PLATFORM)

CFLAGS=\
	-c			\
	-I.			\
	-DWIN32			\
	-D__WIN32__		\
	-DPLATFORM=$(PPLATFORM)	\
	-DNO_DIRENT		\
	-DNO_PIPE		\
	-DNO_STAT		\
	-DNO_UNISTD		\
	-DNO_FCNTL		\
	-DNO_LONG_LONG		\
	-DNO_TERMIOS		\
	-DNO_POSIX	\
	-DNO_LONGLONG\


LOCAL_OBJS=\
	cdecl.obj\
	eicmod.obj\
	emitter.obj\
	error.obj\
	func.obj\
	interpre.obj\
	lexer.obj\
	callback.obj\
	optomizer.obj\
	parser.obj\
	preexpr.obj\
	preproc.obj\
	readline.obj\
	stab.obj\
	starteic.obj\
	symbol.obj\
	typemod.obj\
	typesets.obj\
	ymem.obj\
	reset.obj\


MAIN_OBJS=\
	..\main\main.obj

STDCLIB_OBJS=\
	../module/stdClib/src/stdio.obj\
	../module/stdClib/src/stdlib.obj\
	../module/stdClib/src/string.obj\
	../module/stdClib/src/dirent.obj\
	../module/stdClib/src/assert.obj\
	../module/stdClib/src/time.obj\
	../module/stdClib/src/math.obj\
	../module/stdClib/src/stdarg.obj\
	../module/stdClib/src/errno.obj\
	../module/stdClib/src/stdClib.obj\
	../module/stdClib/src/eicfftoa.obj\
	../module/stdClib/src/itoa.obj\
	../module/stdClib/src/stat.obj\
	../module/stdClib/src/unistd.obj\
	../module/stdClib/src/fcntl.obj\
	../module/stdClib/src/ctype.obj\
	../module/stdClib/src/strround.obj\
	../module/stdClib/src/signal.obj



EIC_OBJS=\
	$(LOCAL_OBJS)\
	stdio.obj\
	stdlib.obj\
	string.obj\
	dirent.obj\
	assert.obj\
	time.obj\
	math.obj\
	stdarg.obj\
	errno.obj\
	stdClib.obj\
	eicfftoa.obj\
	itoa.obj\
	stat.obj\
	unistd.obj\
	fcntl.obj\
	ctype.obj\
	strround.obj\
	signal.obj\
	main.obj\



all: eic.exe eic.lib
	echo "Done EiC"

eic.exe:$(LOCAL_OBJS) $(STDCLIB_OBJS) $(MAIN_OBJS)
	cl -o eic.exe $(EIC_OBJS) $(LIBS)

eic.lib:$(LOCAL_OBJS) $(STDCLIB_OBJS)
	lib  $(EIC_OBJS) 
	rename cdecl.lib eic.lib


binary:
	mkdir EiC
	mkdir EiC\src
	mkdir EiC\include
	mkdir EiC\include\sys
	mkdir EiC\examples
	copy ..\main\examples\*.* EiC\examples
	copy eic.exe EiC
	copy eic.lib EiC
	copy ..\LICENCE EiC
	copy ..\README.WIN32 EiC
	copy ..\include\*.* EiC\include
        copy ..\include\sys\*.* EiC\include\sys

.c.obj :
	cl $(CFLAGS) $<

clean :
	del *.obj
	del *.exe
	del *.lib


EIC라는 C형.. interpreter인데요.. 한번 컴파일할려고 하는데..경험이 없어서 힘드네요..
부탁드립니다..
http://eic.sourceforge.net/ <== 요긴 홈페이지..^^;
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

일단 all:을 보면 두 개의 프로젝트가 함께 있는데 하나는 EXE이고 하나는 LIB입니다. 따라서 워크스페이스 하나 만들고 EXE 프로젝트와 정적 라이브러리 프로젝트를 만들어야 하겠네요. EXE의 구체적인 형식은 main.c의 함수가 main()이면 Console, WinMain()이면 Win32 Application이 될 것이구요.

다음으로... 소스 파일들을 각 프로젝트에 추가해야 하는데, 나열된 .obj 파일들을 보면 알 수 있습니다. .obj 하나 하나가 .c 파일에 해당한다고 생각하면 됩니다. 예를 들어 cdecl.obj가 있으니 cdecl.c를 추가하면 되는거죠. EXE와 LIB의 차이는 main.c 밖에 없군요.

CFLAGS의 -D 옵션들은 VC++의 프로젝트 세팅 - C++ - preprocesser definitions:에 추가해 주면 될 것 같습니다.

binary: 부분은 일단 실행 파일, 라이브러리 파일들이 만들어 진 후 그것들을 적당한 디렉토리에 복사하는 것인데 mkdir, copy만으로 되어 있으니 금방 이해할 수 있을 것입니다. 프로젝트 세팅의 Output 설정과도 관련이 있지만 그냥 윈도우즈 탐색기로 해결해도 될것 같네요.

일단은 모든 obj 파일들이 제대로 생성되는 것을 목표로 빌드를 해보시구요(컴파일 에러들을 해결해 가면서... 대부분 헤더 파일을 제대로 지정하는 차원의 일일 것입니다.). 최종적으로 라이브러리나 EXE를 생성할 때 거의 틀림없이 링크 에러가 날 것입니다. 그 때부터는 프로젝트 세팅 - Link - Object/library modules:에 앞에서 생성된 obj들 또는 다른 어떤 관련 라이브러리를 추가해 가면서 에러를 줄여나가야 할 겁니다.

make 파일이 그리 복잡한 형태가 아니니... make에 대해 한 시간 정도만 읽어보면 이해할 수 있을 것입니다. KLDP.org 에 make에 대한 튜토리얼이 있습니다....
Locked