您的位置:首页 > 编程语言 > C语言/C++

使用ant构建c++ 程序

2006-10-11 17:27 423 查看
使用ant构建c++ 程序 需要先下载 cpptasks  为了一些附加的功能需要下载ant-contrib (http://ant-contrib.sourceforge.net/) ,安装这两个工具很简单,只需要降cpptasks.jar 和antcontrib.jar 拷贝到ant_home/lib目录底下即可
以下是一个例子,

build_cpp.xml


<?xml version="1.0"?>


<project name="antcpp" default="test">


<!-- 引入外部文件--> 


<import file="build.inc"/>




<taskdef resource="cpptasks.tasks"/>


<typedef resource="cpptasks.types"/>


<taskdef resource="net/sf/antcontrib/antcontrib.properties">


  <classpath>


    <pathelement location="/usr/share/java/ant-contrib.jar"/>


  </classpath>


</taskdef>


 


<property name="base.dir" value="."/>


<property name="debug" value="true"/>


<property name="compiler" value="gcc"/>


<property name="src.dir" location="${base.dir}"/>


<property name="samples.dir" location="${base.dir}/samples"/>


<property name="build.dir" location="build"/>


<property name="obj.dir" location="${build.dir}/obj"/>


<property name="include.dir" location="${base.dir}/include"/>


<property name="config.dir" location="${base.dir}/config"/>


<property name="major" value="0"/>


<property name="minor" value="9"/>


<property name="build" value="8"/>


<!-- specify api="unix" or api="win32" override platform default -->


<property name="api" value="default"/>


 


<!-- compiler flag define--> 


<property name="CXX_DFLAGS" value="${DFLAGS} -DXML_ERRORS -DHAVE_CONFIG_H -DFOR_LT "/> 


<property name="RIGHT_HOME" value="${CGI_HOME}/right"/> 


 


<target name="usage">


        


        <echo message="Usage:"/>


        <echo message="ant -f build_cpp.xml"/>


</target>


 


<target name="init">


        <echo message="build init"/>


        <mkdir dir="${build.dir}"/>


        <mkdir dir="${obj.dir}"/>


        <condition property="is-gcc">


                <or>


                        <equals arg1="${compiler}" arg2="gcc"/>


                        <equals arg1="${compiler}" arg2="g++"/>


                </or>


        </condition>


        <condition property="is-msvc">


                <or>


                        <equals arg1="${compiler}" arg2="msvc"/>


                </or>


        </condition>


        <condition property="is-windows"><os family="windows"/></condition>


        <condition property="is-win32">


                <or>


                        <equals arg1="${api}" arg2="win32"/>


                        <and>


                                <equals arg1="${api}" arg2="default"/>


                                <isset property="is-windows"/>


                        </and>


                </or>


        </condition>


        <property environment="env"/>


        <!--  in case not set in environment, use an insignificant value -->


        <property name="env.LD_LIBRARY_PATH" value="."/>


 


</target>


 


<target name="clean">


        <echo message="build clean all"/>


        <delete dir="${build.dir}"/>


 


</target>


 




<target name="build-cpp" >


       <basename property="test.name" file="${a123}" suffix="cpp"/>


       <echo message="compile ${test.name}.cpp with ${compiler}"/>


       <!--  preprocesses .ui and .h files, places generated files on obj.dir  -->


        <cc subsystem="console"


            objdir="${obj.dir}"


            debug="${debug}"


            outtype="executable"


            name="${compiler}"


            exceptions="true"


            rtti="true"


            optimize="speed"


            outfile="${build.dir}/${test.name}.cgi"


            >


            <fileset dir="${src.dir}" includes="${test.name}.cpp"/>


 


            <syslibset libs="z,m,cgicc,ghttp,ltapi${LTXML_VERSION},ltstd${LTXML_VERSION}"/>


            <libset dir="${MYSQL_LIB}" libs="mysqlclient"/>


            <libset dir="../../lib" libs="gspsright,myutil,db,share,webdev,xmlcpp,ini,net"/>


            <compilerarg value="-O2"/>


            <compilerarg value="-Wno-deprecated"/>


            <defineset>


                <define name="FOR_LT"/> 


                <define name="HAVE_CONFIG_H"/>


                <define name="XML_ERRORS"/>


                <define name="SQLLOG"/> 


                <define name="GSPS_HOME" value=""${PUB_HOME}""/> 


            </defineset>


            <includepath location="${MYSQL_INC}"/>


            <includepath location="/usr/local/include"/>


            <includepath location="${LTXML_INC}"/>


            <includepath location="${BOOST_HOME}"/>


        </cc>


 


</target>


 


<target name="build-all" depends="init,setProperties">


    <echo message="The first five letters of the alphabet are:"/>


    <foreach param="a123" target="build-cpp">


        <path>


        <fileset dir="${src.dir}" includes="*.cpp"/>


        </path>


    </foreach>


</target> 




<target name="test" depends="build-all" >


        <exec dir="${build.dir}"


              executable="ls"


              failonerror="false">


        </exec>


</target>


</project> 



build_cpp.inc


<project name="Const_variant" default="setProperties">


        <taskdef resource="cpptasks.tasks"/>


        <typedef resource="cpptasks.types"/>


        <taskdef resource="net/sf/antcontrib/antcontrib.properties">


                <classpath>


                        <pathelement location="/usr/share/java/ant-contrib.jar"/>


                </classpath>


        </taskdef>


        <property name="GSPS_HOME" value=""/>


        <property name="PUB_HOME" value=""/>


        <property name="APACHE_HOME" value=""/>


        <property name="CGI_HOME" value="${APACHE_HOME}/cgi-bin/"/>


        <property name="HTML_HOME" value="${APACHE_HOME}/htdocs/"/>


        <property name="BIN_HOME" value="${PUB_HOME}/bin"/>


        <property name="TMPL_HOME" value="${PUB_HOME}/tmpl"/>


        <property name="DATA_HOME" value="${PUB_HOME}/data"/>


        <property name="LIB_HOME" value="${PUB_HOME}/lib"/>


        <property name="RPATH" value="${LIB_HOME}"/>


        <property name="GDB_FLAGS" value="-O2"/>


      


        <property name="DGSPS_HOME" value="-DGSPS_HOME="${PUB_HOME}""/>


        <property name="DSQLLOG" value="-DSQLLOG"/>


        <property name="MYSQL_HOME" value="/usr/local/mysql"/>


 


 


        <property name="BOOST_HOME" value="${PUB_HOME}/supports/boost-1.30.2"/>  


        <property name="PERL_INC" value=""/> 


        <property name="QUEUE_LIBS" value="-lqdoctransapi -lqpageapi -lqsubjectapi -lqcolumnapi 


                           -lqcrosspublishapi -lqautoadddocapi -lqpubapi -lqcgicallapi -lqcgicall 


                                      -lqemailcallapi -lqueue  -lqcreator -lurlencoder -lhttp"/> 


 


        <property name="LTXML_VERSION" value="12"/> 


        <property name="LTXML_INC" value="/usr/local/include/ltxml${LTXML_VERSION}"/>  


 


        <property name="MYSQL_INC" value="${MYSQL_HOME}/include/mysql"/>


        <property name="MYSQL_LIB" value="${MYSQL_HOME}/lib/mysql"/>


 


        <!--


                        <echo message="The OS is FreeBSD" />


                        <property name="MYSQL_INC" value="${MYSQL_HOME}/include" />


                        <property name="MYSQL_LIB" value="${MYSQL_HOME}/lib"/>


                -->


 


        <target name="setProperties">


                <shellscript shell="sh" inputstring="Magick++-config --libs" outputproperty="MAGICK_LIBS"/>


                <shellscript shell="sh" inputstring="uname" outputproperty="OS"/>


                <shellscript shell="sh" inputstring="/usr/local/bin/perl -MConfig -e 'print $$Config{archlib}'"                        outputproperty="PERL_INC"/>


                <shellscript shell="sh" inputstring="/usr/local/bin/perl -MExtUtils::Embed -e ccopts -e ldopts"                        outputproperty="PERL_LIBS"/>


                <echo message="${MAGICK_LIBS}"/>


                <echo message="${OS}"/> 


                <echo message="${PERL_INC}"/> 


                <echo message="${PERL_LIBS}"/> 


        </target>


</project>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息