알림
2008.07.02 이번 기사 내용 중 일부를 보다 나은 방법으로 대체할 수 있다는 걸 깨달았는데, 구체적인 설명은 이 기법을 완전히 익히고 실험해본 후에 하려 한다.
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
약간 뻘소리지만(…) VS 2008을 (express 버젼이긴하지만) 사용했을 때에는 MSBuild 경로가 .net 프레임웍 3.x기준으로 잡히더군요 -_-;
그래서 MSBuild 경로가 WindowsRoot\Microsoft.NET\Framework\v3.5\MSbuild\ 밑에 있더라구요 -_-;;
MSBuild 쪽에 있는 CPU 여러개를 사용한 동시 컴파일 옵션을 써보려다가 오류가 나서 왜 안되나 했더니, .net 2.0 의 MSBuild를 써서 오류가 난다는걸 발견했었죠;
네, 맞습니다. 이 칼럼을 시작할 때 VS2008이 정식 출시가 안 되어서 VS2005를 기준으로 삼았습니다. 단위 테스트에 대한 글이 끝나면, 컴파일 부분을 보강해서 다룰 생각입니다. 그때 지면이 충분하면 VS2008도 다뤄보겠습니다.
좋은 글 잘 읽었습니다.
빌드 자동화 스크립트라고 하면 전 makefile 처럼 설정을 많이 해 줘야 하는 줄 알았는데
MSBuild.exe 프로젝트.sln /t:Rebuild
/p:Configuration=Debug,Platform=Win32
이런 식으로만 해 주면 되는 것인가요?
그리고 각각의 빌드 환경에 따라서 소스의 복사본을 따로 다 받아야 하는 건가요? 실제적으로는 컴파일 환경을 조절해서 프로젝트를 진행하실텐데 빌드 서버에 로컬 복사본을 MyPrj-Debug-Win32 폴더에 다 받고 MyPrj-Release-Win32 폴더에 다 받고 이렇게 하는 것을 추천하시는 건가요?
msbuild는 솔루션 파일을 빌드할 수 있습니다. 단, C++ 프로젝트일 땐 주의해야 합니다. 비주얼 스튜디오와 미묘하게 다른 빌드 규칙을 적용하기 때문입니다. 아니면 MSBuild 스크립트를 따로 만들고 그 안에서 비주얼 스튜디오 바이너리를 호출하는 방법을 써도 됩니다. 그러면 아무 문제가 없겠죠?
세부사항은 나중에 제대로 다룰 생각이긴 한데, 연재 속도로 봐선 10월은 되어야 가능할 듯 합니다. 쩝.
빌드 환경에 따라 소스 복사본을 따로 받는 걸 추천합니다. 안 그래도 되지만, 한 폴더에 몰아놓고 빌드하면 되려 귀찮은 일이 많아지거든요.
결국 VC++로 프로젝트를 진행할 경우 어떤 파일(MSBuild, VCBuild, devenv)을 사용하는 것이 가장 좋나요? 여러가지 환경(Win32,x64), 여러가지 프로젝트(셋업프로젝트)에서 사용할 때.
글을 읽어 보니 MSBuild는 셋업 프로젝트를 못하고 devenv는 다 가능한 것 같고, VCBuild는 사용을 안 해 봐서 모르겠군요.
혹시 사용하시는 배치 파일에 대해서 좀 예를 들어 주실 수 있으신가요? 저는 현재 CruiseControl.NET은 설치되어 있지 않고 .bat 파일로 일단 자동화를 시작하려고 합니다.
복잡한 환경이라면 MSBuild 스크립트 안에서 Exec 태스크를 이용해 devenv를 호출하는 걸 추천합니다. CCNET.config에서는 이렇게 만든 MSBuild 스크립트를 호출하구요. 배치파일도 마찬가지입니다. 단순히 MSBuild 스크립트 래퍼 정도로 생각하시면 됩니다. 좀더 자세한 내용은 다음 글을 읽어보시면 아실테고, 그래도 궁금하시면 질문 남겨주세요.
https://andromedarabbit.net/how_to_build_sln_using_msbuild/
아, 제가 칼럼에선 이 내용을 나중에 다루는데요. 다 이유가 있습니다. MSBuild 스크립트부터 다뤄야 해서 내용이 많거든요.