From: Curt A. <ca...@ho...> - 2003-01-09 05:29:33
|
Obviously it should not throw an NullPointerException. It occurs in the case since the task didn't anticipate that neither objDir or outfile would be specified. I'll fix it so that it throws an BuildException if you don't specify objDir. Specify objDir to tell the task where you want the object files placed. ----- Original Message ----- From: "Jeff Larkin" <je...@je...> To: "Curt Arnold" <ca...@ho...> Sent: Wednesday, January 08, 2003 2:18 PM Subject: Re: Re: ant-contrib > I must be misreading the CC documentation. As I understand it, if > outfile is not declared the task defaults to compiling without linking. > However, when I do not set outfile, I receive this: > > BUILD FAILED > java.lang.NullPointerException > at net.sf.antcontrib.cpptasks.CCTask.execute(CCTask.java:702) > at org.apache.tools.ant.Task.perform(Task.java:319) > at org.apache.tools.ant.Target.execute(Target.java:309) > at org.apache.tools.ant.Target.performTasks(Target.java:336) > at org.apache.tools.ant.Project.executeTarget(Project.java:1306) > at org.apache.tools.ant.Project.executeTargets(Project.java:1250) > at org.apache.tools.ant.Main.runBuild(Main.java:610) > at org.apache.tools.ant.Main.start(Main.java:196) > at org.apache.tools.ant.Main.main(Main.java:235) > > Is there a step that I missed? Here's my CC command: > > <cc > name="g++" > relentless="false" > warnings="none" > > > <includepath path="${libpmis_includes}"/> > <includepath path="/home/jeff/xerces/include"/> > <includepath path="/usr/X11R6/include"/> > <defineset define="aCCl,__hpux,IOSTREAMH"/> > <fileset dir="."> > <include name="**/*.C"/> > <!-- <exclude name="**/QA*"/> > <exclude name="**/qa*"/>--> > </fileset> > </cc > > Thank you for your help. > > -JL > > > --- Curt Arnold <ca...@ho...> wrote: > > > From: "Curt Arnold" <ca...@ho...> > > > To: "Jeff M. Larkin" <fu...@us...> > > > CC: <fu...@us...> > > > Subject: Re: ant-contrib > > > Date: Tue, 7 Jan 2003 00:44:07 -0600 > > > > > > A couple of reasons behind cc tasks current > > > behavior. Many compilers are > > > substantially faster when they process multiple > > > source files per command > > > line invocation, but that generally requires that > > > all the resulting object > > > files be written to one directory (at least per > > > command line invocation) and > > > does not allow the object filenames to be specified. > > > Keeping the object > > > files in a distinct directory also makes it easy to > > > "clean" the resulting > > > build just by deleting the output directory and > > > allows a developer to keep > > > distinct release and debug builds by using a > > > parameter for the output > > > directory. Source files that result in the same > > > object filename is > > > obviously a problem with that approach. > > > > > > An much earlier version of cpptask did maintain a > > > tree structure in the > > > build directory, but that has problems when the > > > source files come from > > > multiple devices. > > > > > > However, you may be able to work around the > > > duplicate output filename by > > > breaking your compilation into two <cc> steps. The > > > first would compile (but > > > not link) one of the conflicting files to an > > > subdirectory of your build > > > directory. And the second step would compile all > > > the other files explicitly > > > excluding the previously complied source file but > > > including the object file > > > generated in the first step. Any object files > > > included in the compilation > > > fileset are passed directory to the linker with a > > > full path name and should > > > not be conflict with object file generated in the > > > second step. > > > > > > > > > ----- Original Message ----- > > > From: "Jeff M. Larkin" > > > <fu...@us...> > > > To: <ca...@us...> > > > Cc: <fu...@us...> > > > Sent: Monday, January 06, 2003 2:41 PM > > > Subject: ant-contrib > > > > > > > > > > > > > > Hello. I am attempting to use the c/c++ > > > extenstions to ant > > > > as a replacement for traditional makefiles and > > > I've been > > > > more than please so far. I am now running into a > > > problem > > > > and I think you'll be able to answer my question > > > very > > > > quickly. Is the cc task able to build so that > > > object files > > > > remain in the same directory as the source files? > > > I know > > > > that this is possible with javac, but I'm running > > > into the > > > > following error when I use cc: > > > > > > > > BUILD FAILED > > > > > > > file:/home/jeff/cvs/pmis3/library/pmis/build.xml:29: > > > Output > > > > filename conflict: QAlistenport.o would be > > > produced from > > > > > > > > > /home/jeff/cvs/pmis3/library/pmis/ioport/socket/QAlistenport.C > > > > and ioport/socket/ipc/QAlistenport.C > > > > > > > > The files are in different directories, so this > > > shouldn't be > > > > an issue. Here is ths cc section of my build > > > file: > > > > > > > > <cc > > > > name="g++" > > > > outtype="static" > > > > outfile="${libDir}/libpmis3" > > > > relentless="false" > > > > warnings="none" > > > > > > > > > <includepath path="${libpmis_includes}"/> > > > > <includepath > > > path="/home/jeff/xerces/include"/> > > > > <includepath path="/usr/X11R6/include"/> > > > > <defineset define="aCCl,__hpux,IOSTREAMH"/> > > > > <fileset dir="."> > > > > <include name="**/*.C"/> > > > > </fileset> > > > > </cc> > > > > > > > > Thank you. > > > > > > > > -JL > > > > > > > > > > > > > > > > __________________________________________________ > > Do you Yahoo!? > > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > > http://mailplus.yahoo.com > > |