help - g++ hangs during build

Help
Tao Yang
2006-06-02
2013-04-24
  • Tao Yang

    Tao Yang - 2006-06-02

    I am newbie to cpptask but familiar with ant; this is my first build.xml with cpptask, however, it mysteriously fails:

    when fire the build with ant, the target contains "cc" task always hangs. I take a look from windows task manager, it seems g++ is hanging; if I end g++ process from the task manager, the build actually proceed and finish successfully - it does build what I intend to build.

    My question is, what have I did wrong to cause this annoying behavior?

    My ant version: 1.6.5
    ant-contrib: 1.0b2
    cpptask: 1.0b4
    I am using mingw 3.9 with msys 1.0.10 on windowsXP with everything up-to-date;

    following is my build.xml:
    <?xml version="1.0"?>

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

    <property name="base.dir" value="."/>
    <property name="debug" value="true"/>
    <property name="compiler" value="g++"/>
    <property name="src.dir" location="${base.dir}/src"/>
    <property name="test.dir" location="${base.dir}/test"/>
    <property name="build.dir" location="build"/>
    <property name="obj.dir" location="${build.dir}/obj"/>  
    <property name="include.dir" location="${base.dir}/include"/>
    <!-- specify api="unix" or api="win32" override platform default -->
    <property name="api" value="default"/>

    <taskdef resource="cpptasks.tasks"/>
    <typedef resource="cpptasks.types"/>

    <target name="usage">
        <echo message="Builds test"/>
        <echo message="Usage:"/>
        <echo message="ant -Dcompiler=[gcc | msvc ...]"/>
    </target>

    <target name="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="."/>
        <property name="opencv.dir" value="${env.OPENCV_HOME}"/>
        <property name="opencv.lib.dir" value="${opencv.dir}/lib"/>  
    </target>

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

    <target name="buildSegmentor" depends="init">
        <mkdir dir="${obj.dir}"/>
        <cc objdir="${obj.dir}"
            debug="${debug}"
            outtype="executable"
            exceptions="true"
            optimize="speed"
            outfile="${build.dir}/testSeg.exe">
            <includepath path="${opencv.dir}/cv/include"/>
            <includepath path="${opencv.dir}/cvaux/include"/>
            <includepath path="${opencv.dir}/cxcore/include"/>
            <includepath path="${opencv.dir}/otherlibs/highgui"/>
            <includepath path="${opencv.dir}/otherlibs/cvcam/include"/>
            <includepath path="${src.dir}/img"/>
            <compiler id="cp" name="${compiler}"/>     
            <fileset dir="${src.dir}/core" includes="*.cpp"/>
            <fileset dir="${src.dir}/img" includes="*.cpp"/>
            <fileset dir="${src.dir}/video" includes="*.cpp"/>
            <fileset dir="${test.dir}" includes="testSegmentor.cpp"/>
            <linker name="g++" if="is-gcc"/>     
            <libset dir="${opencv.lib.dir}" libs="cv, cvaux, cxcore, highgui"/>
            <defineset define="WIN32" if="is-win32"/>
        </cc>
    </target>
       
    <target name="buildOptiFlow" depends="init">
            <mkdir dir="${obj.dir}"/>
            <cc objdir="${obj.dir}"
                debug="${debug}"
                outtype="executable"
                exceptions="true"
                rtti="true"
                optimize="speed"
                outfile="${build.dir}/testOptiFlow.exe">
                <includepath path="${opencv.dir}/cv/include"/>
                <includepath path="${opencv.dir}/cvaux/include"/>
                <includepath path="${opencv.dir}/cxcore/include"/>
                <includepath path="${opencv.dir}/otherlibs/highgui"/>
                <includepath path="${opencv.dir}/otherlibs/cvcam/include"/>
                <includepath path="${src.dir}/img"/>
                <compiler id="cp" name="${compiler}"/>     
                <fileset dir="${src.dir}/core" includes="*.cpp"/>
                <fileset dir="${src.dir}/img" includes="*.cpp"/>
                <fileset dir="${src.dir}/video" includes="*.cpp"/>
                <fileset dir="${test.dir}" includes="testOpticalFlow.cpp"/>
                <linker name="g++" if="is-gcc"/>     
                <libset dir="${opencv.lib.dir}" libs="cv, cvaux, cxcore, highgui"/>
                <defineset define="WIN32" if="is-win32"/>
            </cc>
        </target>

    <target name="buildAll" depends="buildSegmentor, buildOptiFlow"/>

    </project>

     
    • Nan HUANG

      Nan HUANG - 2007-04-04

      I have the same problem under windows xp using MingW-GCC, my ant version is ant 1.6.5, I tried the svn version, error too.

       
    • Nan HUANG

      Nan HUANG - 2007-04-04

      workaround, instead of using <libset> in the <linker> part, I used <linkerarg> with full command-line options explicitly.

       
      • Dennis Kennedy

        Dennis Kennedy - 2008-06-25

        The workaround didn't work for me, as it put the libraries at the beginning of the command line.

         

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks