Hello Daniel, * Daniel Luis dos Santos wrote on Fri, Aug 22, 2008 at 12:34:23AM CEST: > > I am trying to build a library on a leopard machine with autoconf 2.61 and > automake 10.1 from mac ports. The generated makefile has no object files and > then the ar command fails with : > > ar cru libliquidsurfaces.a > ar: no archive members specified > usage: ar -d [-TLsv] archive file ...
Yep, unfortunately passing no files to 'ar cru $lib' is not portable, besides the fact that POSIX requires you to pass at least one file. You can add a dummy object with source containing static int foo; > lib_LIBRARIES = libliquidsurfaces.a > libliquidsurfaces_a_SOURCES = LiquidSurfaces.cp LiquidSurfacesPriv.h > #libliquidsurfaces_a_LIBADD = LiquidSurfaces.o > include_HEADERS = LiquidSurfaces.h > > I have included the .o in the commented _LIBADD but probably that won't work > because no public symbols are put in the library file. I don't think anybody minds if there are no public symbols (but my memory is a bit vague here, might want to search the list archives on this). > How can I tell in the makefile what are the names of the object files, > instead of being derived from the Sources ? Object file names generally are an internal Automake detail, which you should have no knowledge of. (They might be renamed in the presence of per-target compile flags.) Just listing sources in lib*_SOURCES should get the objects compiled from those sources into the archive. Hope that helps. Cheers, Ralf