nmake 로 cl 컴파일러 사용하는 makefile 작성법 질문입니다

lee16abc의 이미지

안녕하세요.

회사에서 진행하는 프로젝트가..

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 에러가 나는지 모르겠습니다..

ktd2004의 이미지

굳이 nmake를 쓰셔야할 이유가 없다면
msdev.com을 사용해서 dsw 파일을 직접 빌드하는 것을 추천해드립니다.

msdev.com /USEENV MyProj.dsw /MAKE "MyProj - Win32 Release" /REBUILD
lee16abc의 이미지

msdev.com 은 한번도 안써봤는데..

makefile 은 안쓰여지는 거죠?

컴파일 옵션두 중요하구 ..이 프로젝트가 참조하는 수많은 라이브러리 및 헤더파일들의 링크가 makefile 에 정의되어 있는데

가능할까요?..

아..제일 중요한건..프로젝트 자체는 .net2003에서 개발되어서 .dsw 파일은 없고 .sln 솔루션 파일이 있습니다.

(.net2003에서 개발해놓구 VC98\bin\cl.exe 로 컴파일 하는건 저도 이해가 잘 안되네요 -_-;)

hys545의 이미지

즐린
어차피 프로젝트 파일에 참조 라이브러리 다 있습니

즐린

익명 사용자의 이미지

일반적으로 ms 개발 툴을 쓸 때에는 (드라이버가 아닌 이상)
위엣 분들 말씀처럼 dsw파일이나 sln파일을 가지고 직접 빌드합니다.

아래 링크에서 뱃치 파일로 데일리 빌드를 어떻게 하나 참고하십시오.
http://gpgstudy.com/forum/viewtopic.php?t=7692

다른 가능성으로는
MinGW나 Cygwin에 딸려오는 gnu make를 이용하는 것도 한 방법이겠지요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.