如何强制cpptask将静态库移动到发送给编译器的arg列表的末尾?
这是我正在使用的条款
<cpptasks:cc description="appname" subsystem="console" objdir="obj" outfile="dist/app_test">
<compiler refid="testsslcc" />
<linkerarg value="-L${libdir}" />
<linkerarg value="-L/usr/local/devl/lib" />
<linkerarg value="-Wl,-rpath,../lib" />
<libset libs="unittest ${libs} dsg readline ncurses gcov" />
<fileset dir="test/obj" includes="main.o" />
<fileset dir="." includes="${TCFILES}" />
<fileset dir="../lib" includes="libboost_thread.a libboost_date_time.a" />
</cpptasks:cc>
执行此操作时,libboost_thread.a libboost_date_time.a是传递给编译器的参数列表中的第一个文件,
gcc -ggdb -Wl,-export-dynamic -Wshadow -Wno-format-y2k \
../../lib/libboost_date_time.a ../../lib/libboost_thread.a x.cpp ...
导致编译器错误。通过手动将它们移动到参数列表的末尾,应用程序可以无错误地编译。
gcc -ggdb -Wl,-export-dynamic -Wshadow -Wno-format-y2k x.cpp ... \
../../lib/libboost_date_time.a ../../lib/libboost_thread.a
是的,我尝试更改xml中的顺序,当然这不起作用。现在我使用exec任务以正确的顺序调用gcc文件,但这当然是一个黑客。
答案 0 :(得分:0)
尝试将存档中的fileset
更改为libset
。