2009-11-25 6 views
2

증분 빌드를 지원하지 않고 Exec 태스크를 통해 모든 코드를 작성하는 콘텐츠가 있으면 MSBuild 스크립트로 C++ 바이너리를 빌드 할 수없는 이유가 있습니까?MSBuild 및 C++

VS 2010은 실제로 실제 MSBuild 기반 프로젝트 파일을 지원하지만 이전에 내장 된 VC++ 4.0 작업 공간을 전체적인 자동화 프로세스로 통합하는 것이 좋습니다.

종속성 추적과 관련하여 몇 가지 문제가있을 것이라고 가정하지만 매번 깨끗한 빌드를 수행하는 경우주의해야 할 사항이 있습니까?

답변

2

당신이 쓸 수있는 내 개인 정보를 제거 자신의 ITask하거나이 같은 Exec을 인수 작업, 뭔가 전화 :

<PropertyGroup> 
    <EvcPath>$(programfiles)\Microsoft eMbedded C++ 4.0\Common\EVC\Bin\EVC</EvcPath> 
    <EvcProjectPath>your.vcw</EvcProjectPath> 
</PropertyGroup> 
    <PropertyGroup Condition=" '$(CEPlatform)' == 'WCEARM2003SP' "> 
    <EvcBuildConfig>All - Win32 (WCE ARMV4) $(Configuration)</EvcBuildConfig> 
<EvcCEConfig>Smartphone 2003 Device</EvcCEConfig> 
</PropertyGroup> 
    <PropertyGroup Condition=" '$(CEPlatform)' == 'WCEARM2003' "> 
    <EvcBuildConfig>ALL - Win32 (WCE ARMV4) PPC2003 $(Configuration)<EvcBuildConfig> 
    <EvcCEConfig>POCKET PC 2003</EvcCEConfig> 
</PropertyGroup> 

<Target Name="BuildEvcProjects"> 
    <Exec Command="$(EvcPath) %22$(EvcProjectPath)%22 /make %22$(EvcBuildConfig)%22 /CEConfig=%22$(EvcCEConfig)%22" 
    IgnoreExitCode="true"> 
    <Output TaskParameter="ExitCode" PropertyName="EvcExitCode"/> 
    </Exec> 
    <Error Text="eVC 4.0 build has encountered an error. Exit code=$(EvcExitCode) " Condition="$(EvcExitCode) != 0" /> 
</Target> 

궁극적으로는 CE를 가질 수를 정의 및 논리를 자체 MSBuild 프로젝트가 참조하는 자체 .targets 파일에 저장합니다. 또 다른 접근법은 배치 파일을 호출하는 것입니다.

0

내 빌드 스크립트 (VS 2008)를 공유해 주시면 도움이 될 것입니다. 나는 정오에 매일 실행하는 Windows 작업 스케줄러에이 있습니다.

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" 

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:"C:\Users\***\Desktop\Project\***" /closeonend:2 

chdir c:\Users\**\Desktop\Project\** 

rmdir /s /q C:\Users\***\Desktop\Project\***\bin\x86\Debug\app.publish 

msbuild 

msbuild /target:publish 

chdir c:\Users\***\Desktop\Project\***\bin\x86\Debug 

"C:\Program Files\WinRaR\Rar.exe" a -r -df -m5 C:\Users\***\Desktop\Project\***\BetaTest.zip app.publish 

"C:\Program Files\SSH Communications Security\SSH Secure Shell\scp2.exe" C:\Users\***\Desktop\Project\***\BetaTest.zip ***@***.****: 

del /q C:\Users\***\Desktop\Project\***\CCBetaTest.zip 

편집 : 추가 설명 vs build에 대한 환경 변수를로드하고 svn 업데이트를 수행합니다. 이전 빌드를 정리합니다. 나는 XNA를 사용하기 때문에 (즉, 파일을 반으로 복사하지 못하기 때문에) 두 번 빌드하고, 그 다음 ZIP하고 scp (내 ssh 용 RSA 키가 있음) 내 서버에 scp한다.

가 나는 ***

+0

XNA의 프로젝트/솔루션 파일 형식 일뿐 아니라 MSBuild 파일 자체에 더 많은 관심이 있습니다. –

+0

MSBuild는 .NET Framework 2.0 이상의 프로그램으로, 지정된대로 명령 줄에서 호출 할 수 있습니다 여기에 : http://msdn.microsoft.com/en-us/library/ms164311.aspx 그것은 솔루션을 빌드 할 것입니다. 실제로는 컴파일러와 링커 같은 다른 프로그램에 대한 호출입니다. 제대로 빌드하려면 vcvars32.bat 변수를 셸에로드해야한다는 점에 유의하십시오. MSBuild를 사용하여 스크립트로 C++ 바이너리를 빌드 할 수 있는지 묻는다면 그렇게하는 방법입니다. – tzenes