Авто сборка проектов Visual C++ 2005, 2008

Ноябрь 29, 2007

Для этих целей я использую NAnt. К сожалению текущая версия (0.85) поддерживает работу только с проектами Visual Studio 2003. Поэтому для автоматической сборки проектов написанных с помошью Visual C++ 2005, а теперь 2008, я использую утилиту vcbuild.exe которая идет с Visual Studio.

Ниже приводится примеры скриптов, которые собирают solution Game.sln в конфигурации Release|Win32. Отличия между этими скриптами только в путях переменных окружения.

Реализация для Visual C++ 2005

<?xml version="1.0" encoding="windows-1251" ?>
<project name="Game" default="dist"  basedir=".">

    <property name="out.dir" value="dist" />
    <property name="release.dir" value="release" />


    <target name="setup_environment">
        <setenv>
            <variable name="VSINSTALLDIR" value="%VS80COMNTOOLS%../.." />
            <variable name="VCINSTALLDIR" value="%VSINSTALLDIR%\VC" />
            <variable name="DevEnvDir" value="%VSINSTALLDIR%\Common7\IDE" />
            <variable name="PLATFORM_SDK" value="c:\Program Files\Microsoft Platform SDK" />
            <variable name="PATH" value="%DevEnvDir%;%VCINSTALLDIR%\BIN;%VCINSTALLDIR%\vcpackages;%VSINSTALLDIR%\Common7\Tools;%PATH%;" />
            <variable name="INCLUDE" value="%VCINSTALLDIR%\include;%PLATFORM_SDK%\INCLUDE;%PLATFORM_SDK%\INCLUDE\crt;" />
            <variable name="LIB" value="%VCINSTALLDIR%\lib;%PLATFORM_SDK%\LIB;%LIB%" />
        </setenv>
    </target>

    <target name="clean" >
        <echo message="Remove Game's intermediated files"/>
        <delete dir="temp" />
        <delete file="${out.dir}/game.exe" />
        <delete file="${out.dir}/game.dat" />
    </target>

    <target name="dist" depends="setup_environment, clean">
        <echo message="Compiling game."/>

        <delete dir="${release.dir}" />
        <mkdir dir="${release.dir}" />        


        <exec program="vcbuild.exe" >
            <arg value="/rebuild" />
            <arg value="Game.sln" />
            <arg value="Release|Win32" />
            <arg value="/useenv" />
        </exec>

        <copy todir="${release.dir}">
            <fileset basedir="${out.dir}">
                <include name="game.exe" />
				<include name="game.dat" />
            </fileset>
        </copy>
    </target>

</project>
			

Реализация для Visual C++ 2008

<?xml version="1.0" encoding="windows-1251" ?>
<project name="Game" default="dist"  basedir=".">

    <property name="out.dir" value="dist" />
    <property name="release.dir" value="release" />


    <target name="setup_environment">
        <setenv>
			<variable name="VSINSTALLDIR" value="%VS90COMNTOOLS%../.." />
            <variable name="VCINSTALLDIR" value="%VSINSTALLDIR%\VC" />
            <variable name="DevEnvDir" value="%VSINSTALLDIR%\Common7\IDE" />
            <variable name="PLATFORM_SDK" value="c:\Program Files\Microsoft SDKs\Windows\v6.0A" />
            
            <variable name="PATH" value="%DevEnvDir%;%VCINSTALLDIR%\BIN;%VCINSTALLDIR%\vcpackages;%VSINSTALLDIR%\Common7\Tools;%PLATFORM_SDK%\bin;%PATH%;" />
            <variable name="INCLUDE" value="%VCINSTALLDIR%\include;%PLATFORM_SDK%\INCLUDE;" />
            <variable name="LIB" value="%VCINSTALLDIR%\lib;%PLATFORM_SDK%\LIB;%LIB%" />
        </setenv>
    </target>

    <target name="clean" >
        <echo message="Remove Game's intermediated files"/>
        <delete dir="temp" />
        <delete file="${out.dir}/game.exe" />
        <delete file="${out.dir}/game.dat" />
    </target>

    <target name="dist" depends="setup_environment, clean">
        <echo message="Compiling game."/>

        <delete dir="${release.dir}" />
        <mkdir dir="${release.dir}" />        


        <exec program="vcbuild.exe" >
            <arg value="/rebuild" />
            <arg value="Game.sln" />
            <arg value="Release|Win32" />
            <arg value="/useenv" />
        </exec>

        <copy todir="${release.dir}">
            <fileset basedir="${out.dir}">
                <include name="game.exe" />
				<include name="game.dat" />
            </fileset>
        </copy>
    </target>

</project>
			

Обсудить в форуме.


Раз вы уже дочитали до сюда, то вам ничего не будет стоить кликнуть на рекламу

All content copyright (c) 2012 Vladislav Litunovskiy. All Rights Reserved.