Joseph Blough ha scritto:
I've come across an issue where linking errors appear looking for
wxVariant functions. A search on the wxWindows newsgroup indicated that placing $(WX_LIBS) at the end of linking line would fix the error. That was tried and it did work. The question is then how to add this criteria to the Bakefile so that the generated GNUmakefile doesn't need to be tweaked with this change.
I'm aware of this problem.
I submitted a patch to wx dev a while ago to fix it and it has been applied in CVS (2.7 branch) but even if I asked often to do it also for 2.6 branch it was not applied there...

So, I presume that you are using wxpresets of 2.6 branch.
To fix the problem, I suggest you to replace your wx_unix.bkl file with the one I'm attaching to this mail....

Francesco
<?xml version="1.0" ?>
<!-- $Id: wx_unix.bkl,v 1.4 2006/03/11 14:51:45 JS Exp $ -->

<!--
Presents for building wxWidgets applications using Autoconf or GNU toosets.
See wx.bkl for platform-independent notes.

Usage:
    Options WX_CPPFLAGS, WX_CFLAGS, WX_CXXFLAGS, WX_LIBS are defined.


Format-specific notes:

* autoconf:
        Beware that you have to use AM_OPTIONS_WXCONFIG and
        AM_PATH_WXCONFIG in your configure.in!

-->


<makefile>

    <!-- ============================================================== -->
    <!--                           Autoconf                             -->
    <!-- ============================================================== -->

    <if cond="FORMAT=='autoconf'">
        <!-- Autoconf backend is simplicity itself thanks to wx-config... -->
        <option name="WX_CFLAGS"/>
        <option name="WX_CXXFLAGS"/>
        <option name="WX_CPPFLAGS"/>
        <option name="WX_LIBS"/>
        <option name="WX_RESCOMP"/>
    </if>

    <!-- ============================================================== -->
    <!--                   GNU makefiles for Unix                       -->
    <!-- ============================================================== -->

    <if cond="FORMAT=='gnu'">
        <option name="WX_CONFIG">
            <default-value>wx-config</default-value>
            <description>Location and arguments of wx-config script</description>
        </option>
        <option name="WX_CFLAGS">
            <default-value>`$(DOLLAR)(WX_CONFIG) --cflags`</default-value>
            <description>C flags to use with wxWidgets code</description>
        </option>
        <option name="WX_CXXFLAGS">
            <default-value>`$(DOLLAR)(WX_CONFIG) --cxxflags`</default-value>
            <description>C++ flags to use with wxWidgets code</description>
        </option>
        <option name="WX_CPPFLAGS">
            <default-value>`$(DOLLAR)(WX_CONFIG) --cppflags`</default-value>
            <description>C preprocessor flags to use with wxWidgets code</description>
        </option>
        <option name="WX_LIBS">
            <default-value>`$(DOLLAR)(WX_CONFIG) --libs`</default-value>
            <description>wxWidgets libraries to link against</description>
        </option>
        <option name="WX_RESCOMP">
            <default-value>`$(DOLLAR)(WX_CONFIG) --rescomp`</default-value>
            <description>wxWidgets resource compiler and flags</description>
        </option>

        <!-- we need this but the trick used in default-values above
             prevents bakefile from detecting it: -->
        <set var="FORMAT_OUTPUT_VARIABLES" append="1">WX_CONFIG</set>
    </if>

    <!-- ============================================================== -->
    <!--                          Common code                           -->
    <!-- ============================================================== -->

    <if cond="FORMAT not in ['gnu','autoconf']">
        <error>
            Don't include presets/wx_unix.bkl directly, use presets/wx.bkl.
        </error>
    </if>

    <!--
         We need to re-define the WINDRES resource compiler name to the resource compiler
         returned by 'wx-config - -rescomp' since this option returns both the name of the
         resource compiler to use (windres) and the flags required for that compiler.

         This line typically does something *only* when the Makefile.in generated
         using this bakefile, is used on Windows with MSYS (when using Cygwin, resources
         are not compiled at all).
         Without this line, in fact, when compiling with MSYS on Windows, the - -include-dir
         option which tells windres to look in wxWidgets\include folder would be missing and
         then windres would fail to find the wxMSW resources.

         NOTE: overwriting the WINDRES variable we add wxWidgets resource flags to
               all targets which include this bakefile; this could be useless to those
               targets which are not wx-based eventually present in that bakefile but
               in any case it shouldn't do any harm.
    -->
    <set var="WINDRES">$(WX_RESCOMP)</set>

    <template id="wx-lib">
        <cxxflags>$(WX_CXXFLAGS)</cxxflags>
        <cflags>$(WX_CFLAGS)</cflags>
    </template>

    <template id="wx" template="wx-lib">
        <!--
            Don't include the $(WX_LIBS) variable in linker options here since
            it would make impossible for the user to obtain the right library
            order when he needs to specify, *before* WX_LIBS, its own libraries
            that depend on wxWidgets libraries; to avoid this, we include
            $(WX_LIBS) as soon as we found the <wx-lib>base</wx-lib> tag which
            the user should always put *after* all other wx-dependent libraries
        -->
    </template>

    <!-- not used together with wx-config: -->
    <define-tag name="wx-lib" rules="exe,dll,module">
        <if cond="value=='base'">
            <ldlibs>$(WX_LIBS)</ldlibs>
        </if>
    </define-tag>

</makefile>

Reply via email to