nmake 로 cl 컴파일러 사용하는 makefile 작성법 질문입니다
안녕하세요.
회사에서 진행하는 프로젝트가..
makefile을 작성하여, nmake 로 컴파일&빌드 하여 관리하고 있습니다.
(컴파일러는 VC6.0 의 VC98\bin 에 있는 cl.exe 를 사용합니다.)
지금까지는 컴파일 옵션을 디버그 모드에만 맞춰서 설정해놨었는데,
디버그 모드와 릴리즈 모드로 나눠 놓을 일이 생겨서,
nmake 명령줄에는
nmake /f makefile.win FLAG="debug" 이렇게 주고
(릴리즈 모드시엔 FLAG="release"로 주겠죠)
makefile.win 파일에
!IF "$(FLAG)" == "debug"
compile_option=/c /Gd /EHa /Yd /Zi /MT /Fd"$(output)\vc$(base_name).pdb
!ELSE
compile_option=/c /Gd /EHa /W3 /WX /GX /O2
!ENDIF
이렇게 컴파일 옵션을 정의해 놨습니다.
근데 IF 구문은 문제없이 통과 하는데,
complile_option 줄에서 syntax 에러가 나네요..
어제까지는 IF 구문없이
compile_option=/c /Gd /EHa /Yd /Zi /MT /Fd"$(output)\vc$(base_name).pdb
디버그 모드에 있는 위 컴파일 옵션만 줬었는데, 문제 없이 잘 써왔습니다.
단지 IF 구문으로 컴파일 옵션만 나눠놨을뿐인데..
게다가 전에 쓰던거랑 똑같은 디버그모드 컴파일 옵션에서 에러가 나니
잘 이해가 안되네요.
어디가 잘못된 걸까요? 도움 말씀좀 부탁드립니다.~
P.S : 저희가 쓰는 makefile.win 파일은 VC++ 안에 있는 Export Makefile 기능으로 만든건 아니지만, 기본적인 구조는 비슷할거라 보는데..
다른프로젝트에 VC++ 로 만든 .mak 파일을 보니 위와 같은 디버그,릴리즈 모드를 구분하는 IF 구문이 있는데 정상적으로 잘 동작하네요
다른것도 아니고 왜 syntax 에러가 나는지 모르겠습니다..
굳이 nmake를 쓰셔야할
굳이 nmake를 쓰셔야할 이유가 없다면
msdev.com을 사용해서 dsw 파일을 직접 빌드하는 것을 추천해드립니다.
그럼 makefile 은 필요 없는건가요
msdev.com 은 한번도 안써봤는데..
makefile 은 안쓰여지는 거죠?
컴파일 옵션두 중요하구 ..이 프로젝트가 참조하는 수많은 라이브러리 및 헤더파일들의 링크가 makefile 에 정의되어 있는데
가능할까요?..
아..제일 중요한건..프로젝트 자체는 .net2003에서 개발되어서 .dsw 파일은 없고 .sln 솔루션 파일이 있습니다.
(.net2003에서 개발해놓구 VC98\bin\cl.exe 로 컴파일 하는건 저도 이해가 잘 안되네요 -_-;)
sln은 msbuild로 컴파일 가능합니다.
즐린
어차피 프로젝트 파일에 참조 라이브러리 다 있습니
즐린
일반적으로 ms 개발
일반적으로 ms 개발 툴을 쓸 때에는 (드라이버가 아닌 이상)
위엣 분들 말씀처럼 dsw파일이나 sln파일을 가지고 직접 빌드합니다.
아래 링크에서 뱃치 파일로 데일리 빌드를 어떻게 하나 참고하십시오.
http://gpgstudy.com/forum/viewtopic.php?t=7692
다른 가능성으로는
MinGW나 Cygwin에 딸려오는 gnu make를 이용하는 것도 한 방법이겠지요.
댓글 달기