2013年2月10日日曜日

[Ant]Link 時に auto-import のエラーが出る

Ant に限った話ではないが Cygwin の gcc でコンパイル・リンクする時に以下のような auto-import に関する Warning が表示される時がある。
 [cc] Starting link
 [cc] /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
 warning: auto-importing has been activated without --enable-auto-import specifi
ed on the command line.
 [cc] This should work unless it involves constant data structures referen
cing symbols from auto-imported DLLs.Info: resolving vtable for CppUnit::TestSui
teBuilderContextBaseby linking to __imp___ZTVN7CppUnit27TestSuiteBuilderContextB
aseE (auto-import)
この場合は Linker オプションに --enable-auto-import を渡してやればよい。Ant を使用している場合に Linker にオプション (引数) を付ける方法は以下の通り。
<target name="build" depends="init">
  <cc outtype="executable"
      subsystem="console"
      outfile="${dist.dir}/test"
      objdir="${build.dir}"
      debug="true">
    <compiler name="g++">
      <fileset dir="${src.dir}"
               includes="main.cpp,Counter.cpp,CounterTest.cpp"/>
    </compiler>
    <linker name="gcc" libtool="true">
    <libset libs="cppunit,stdc++"/>
      <linkerarg value="--enable-auto-import"/>
    </linker>
  </cc>
</target>
ant に -verbose オプションを付けて Linker に渡された引数を確認してみると --enable-auto-import が付いていることがわかる。
[cc] Starting link
[cc] gcc -Wl,--enable-auto-import -g -o test ..\build\main.o ..\build\CounterTest.o ..\build\Counter.o -lcppunit -lstdc++

0 件のコメント:

コメントを投稿