2010-03-20 4 views
2

cpptask가 정적 라이브러리를 컴파일러에게 발행 된 arg 목록의 끝으로 이동하도록하려면 어떻게해야합니까? 여기 gpp 명령 줄에서 정적 라이브러리의 cpptask 순서 지정

이 실행될 때 내가

<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

Ant가 gcc 명령 줄을 생성하는 방법은 무엇입니까? – bjhend

답변

0

으로 보관함을 사용하여 fileset을 변경해보십시오.