기본 콘텐츠로 건너뛰기

라벨이 MSBuild인 게시물 표시

node-gyp 빌드 오류가 발생하는 경우 대처법

NPM Install 도중에 node-gyp 빌드 오류가 발생하는 경우 Node 기반의 프로그램을 작성하면서 필요한 패키지들을 설정하고 npm install 명령으로 설치를 하다보면 패키지 설정에 의해서 설치 후 빌드 작업이 진행되는 경우가 있다. 이런 경우에 빌드 환경이 제대로 구성되지 않아서 오류가 발생하는 경우가 있어서 정리해 본다. Warning 이 문서에서 모든 환경을 다루는 것이 아니고 msbuild 처리 환경에 대해서만 검토 한 내용이므로 다른 환경인 경우는 적용되지 않는다. 오류 상황 Node 기반에서 돌아가는 어플리케이션을 Github에서 다운로드 받아서 테스트를 위해서 npm install 명령을 했을 때 뜬금없이 msbuild 관련한 환경설정이 부족해서 오류가 발생했다. Python 2.5 이상 3.0 이하 설치 해야 한다는 오류 설치 했더니 .NET Framework 2.0 이상을 설치 해야 한다는 오류 설치 했더니 VCBuil.exe 가 존재하지 않으니 .NET Framework 2.0 SDK 나 Visual Studio 2005를 설치 해야 한다는 오류 기타 등등... 상기의 상태에서 더 이상 진행 불가!!! 물론 전부를 설치하면 되겠지만 그렇다고 쓰지도 않는 툴들을 설치하는 것은 문제가 있어 보인다. 오류 원인 오류의 원인은 간단하다. 해당 어플리케이션 패키지에 정의된 의존성 패키지들 중에 설치과정에서 빌드를 거쳐야 하는 것이 존재하며 Python 으로 구현된 것들과 VC 로 구현된 것을 MSBuild를 이용해서 처리하기 때문이다. 일반적으로 Node 기반의 개발에서는 VSCode 나 Atom 등의 도구와 NodeJS, Git 등의 툴들만 사용하기 때문에 관련된 다른 언어나 IDE 환경이 존재하지 않기 때문이다. 오류 해결 방법 가장 쉬운 방법은 모든 언어와 IDE 개발 환경을 맞춰주면 전혀 문제가 없겠지만, 쓰지도 않는 환경을 단지 설치 상의 빌드 때문에 설치하고 지우는 것도 웃기다. 역시 구글링을 하다보니 이런...

[ MSBUILD ] 개념 잡기... #3 응용 방법

기존 게시글 까지 해서 기본적인 방법에 대해서 알아 보았으므로 이번 부터는 좀 더 다양하게 활용하는 방법에 대해서 알아보도록 하자. 뭐... 굉장한 응용은 아니고 이미 Visual Studio IDE를 통해서 처리되는 것들이지만 Visual Studio 의 도움 없이도 처리할 수 있도록 스크립트를 구성해 보는 것이기 때문에 아마도 모르고 지나간 원리들을 정리하는데 도움이 될 것이다. MSBuild 응용   요즘 거의 대부분의 PC 들이 멀티 프로세스 환경이기 때문에 이 환경에서 Rebuild 문제를 검토해 보고, 그 다음에는 MSBuildTasks 를 통해서 확장을 하는 것 까지 검토해 보도록 한다. Rebuild on Multi Processor or Core   개인 PC 와 빌드 서버의 차이는 아마도 Processor 나 Core 라고 해도 될 것이다. 2 CPU * 2 Core 인지, 1 CPU * 2 Core 일지 등등 말이다. 그냥 생각하면 별 것 아닌 것 같지만 아래의 내용을 검토해 보면 차이가 존재하고 이것이 문제가 될 수도 있으므로 이를 검토해 보도록 하자. <Target Name="Build"> <Message Text="타겟: Build" /> <Message Text="빌드 조건: '$(BuildCondition)'" Importance="high" /> <MSBuild Projects="@(ProjectReferences)" Properties="Configuration=%(ProjectReferences.Configuration);Platform=%(ProjectReferences.Platform)" StopOnFirstFailure="true" /> </Targ...

[ MSBUILD] 개념 잡기 - #2 환경에 따라서 빌드 구성하기.

  기본적인 설정과 동작에 관련된 부분은 이전 게시글 에서 알아 보았다. 이번에는 좀 더 다양한 정보를 기준으로 활용할 수 있는 빌드 스크립트를 구성하고 실행해 보도록 한다. New basic build script   파일의 이름은 "msbuild-basic-template.xml" 하고 아래의 내용과 같이 새로운 구성의 빌드 스크립트를 구성하도록 하자. <?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- 활용할 특수문자 정의 --> <PropertyGroup> <Semicolon>%3b</Semicolon> <Ampersand>&amp;</Ampersand> <LeftAngleBracket>&lt;</LeftAngleBracket> <RightAngleBracket>&gt;</RightAngleBracket> <StraightQuotationMark>&quot;</StraightQuotationMark> <Quot>$(StraightQuotationMark)</Quot> <Apostrophe>&apos;</Apostrophe> </PropertyGroup> <!-- 기본 폴더 정의 --> <PropertyGroup> <RootDir>...

[ MSBUILD ] 개념 잡기... #1 기본 설정과 동작

  기본 제공되는 Visual Studio 빌드를 이용해서도 큰 무리는 없지만 파일 배포나 경로 변경 또는 상황적인 파일의 필터링 등을 활용하기 위해서는 MSBUILD 또는 NAnt 와 같은 3rd 빌드 툴을 이용해야 한다. 관련해서 이런 저런 정보를 검색하던 중에 마이크로소프트웨어(마소)에 연재된 MSBUILD 관련 글을 읽어 보고 나름대로 정리를 해 놓도록 한다. MSBUILD 개념   우선 반드시 알고 넘어가야 하는 것은 *.csproj 파일의 정체다. 대 부분은 프로젝트 파일이라고 알고 있지만 정확하게는 MSBUILD 파일이다. 여기에 구성된 파일과 빌드에 필요한 정보를 가지고 있는 XML 파일인 것이다. 기본적인 구성   빌드 스크립트는 아래의 구성과 같이 기본적인 구성이 존재한다. 이 구성을 기준으로 필요한 부분들을 추가하고 조정해 나가면 되는 것이다. 아래의 파일은 build.xml 이라고 생성해 놓는다) <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Clean"> <Message Text="타겟: Clean" /> </Target> <Target Name="Build"> <Message Text="타겟: Build" /> </Target> <Target Name="Rebuild" DependsOnTargets="Clean; Build"> <Message Text="타겟: Rebuild" /> </Target> </Project>   위의 코드는 말 그대로 뼈대만 존재하는 것이다. 어떤 스크...