I can link but in other projects I usually name my lib:  libmylib.dll  (I
usually do no use the  ".dll.a" because I directly use the libmylib.dll,
mingw can do that)

thx for the explanations.

Julien

2009/2/25 Nicola Pero <[email protected]>

>
> On 24 Feb 2009, at 23:44, Julien Isorce wrote:
>
>  Thx a lot that works.
>>
>> I have source1, source2, source2/source3
>>
>> so I did mylib_SUBPROJECTS = source1 source2 source2/source3
>>
>> The result is mylib-0.dll and libmylib.dll.a
>>
>> Do you know have to have libmylib.dll instead of mylib-0.dll ?
>>
>> (I read in the manual that I have to prefix by "lib" but I think I did it:
>> LIBRARY_NAME = libmylib)
>>
>
> Well, it should all work with mylib-0.dll and libmylib.dll.a.  They are
> expected.  You can link the library using -lmylib.
> The version number (the '0') matters though; your executable will require
> mylib-0.dll and won't work for example
> with mylib-1.dll. ;-)
>
> The way the 'lib' prefix and the version number are added is automatic.
>  The 'lib' prefix gets automatically
> added on Unix, and stripped on Windows.  You can link the library on both
> platforms using the same flag -lmylib
>
> The '0' is the version number; you can control it by setting the
>
> mylib_INTERFACE_VERSION = 2
>
> variable.  Eg, this would set it to '2' and generate a mylib-2.dll.  If you
> don't set xxx_INTERFACE_VERSION,
> then the beginning of the xxx_VERSION variable is used.  By default, that
> variable is set to '0.0.0', which means
> xxx_INTERFACE_VERSION gets set to '0', and you get mylib-0.dll.  This is
> all similar to Unix,
> where symlinks get used for versioning and there is an interface version.
>
> I recommend you just set
>
> mylib_VERSION = 1.0.0
>
> which will generate a mylib-1.dll.  Then, keep this mylib_VERSION string
> up-to-date, and change the first number when
> you want to signify a break in compatibility.  Or use xxx_INTERFACE_VERSION
> to fine tune when your
> library has a significant incompatible change. :-)
>
> Finally, if you are having a problem (ie, you can't actually link the
> library you created!) let me know (can you
> provide me the output of 'make messages=yes' when trying to link the
> library).  Make sure you install the library
> before trying to link it. ;-)
>
> Thanks
>
>
>
>
>
>>
>>
>> 2009/2/24 Nicola Pero <[email protected]>
>> You want to use subprojects :-)
>>
>> Your top level GNUmakefile should look like
>>
>>
>>
>>
>> include $(GNUSTEP_MAKEFILES)/common.make
>>
>> LIBRARY_NAME = mylib
>> mylib_SUBPROJECTS = source1 source2
>>
>> include $(GNUSTEP_MAKEFILES)/library.make
>>
>>
>> This will compile a single library, at top level, by linking together the
>> subprojects source1 and
>> source2.
>>
>>
>> Then, in source1 you need a GNUmakefile such as the following one:
>>
>>
>>
>>
>> include $(GNUSTEP_MAKEFILES)/common.make
>>
>> SUBPROJECT_NAME = source1
>> source1_C_FILES = file11.c file12.c
>>
>> include $(GNUSTEP_MAKEFILES)/subproject.make
>>
>>
>> This will compile the files and link them into a subproject, which is then
>> used by the top-level GNUmakefile.
>> In source2, you may want to add a similar GNUmakefiles.
>>
>> Hope this helps! :-)
>>
>> Let me know if you need more help
>>
>> Thanks
>>
>>
>> On 24 Feb 2009, at 19:57, Julien Isorce wrote:
>>
>> Hi,
>>
>> I have a project where there is severals source directories: source1,
>> source2, source3
>> I want to compile the project to make only one shared library.
>> I have tried to use the following:
>>
>>
>> in the top directory:
>> ------------------------------------------------------------------------
>> include $(GNUSTEP_MAKEFILES)/common.make
>> SUBPROJECTS = source1 source2
>> include $(GNUSTEP_MAKEFILES)/aggregate.make
>> ------------------------------------------------------------------------
>>
>>
>> in source1 dir:
>> ------------------------------------------------------------------------
>> include $(GNUSTEP_MAKEFILES)/common.make
>>
>> LIBRARY_NAME = libmylib
>>
>> libmylib_C_FILES = file11.c file12.c
>>
>> include $(GNUSTEP_MAKEFILES)/library.make
>> ------------------------------------------------------------------------
>>
>> and in source2:
>> ------------------------------------------------------------------------
>> include $(GNUSTEP_MAKEFILES)/common.make
>>
>> LIBRARY_NAME = libmylib
>>
>> libmylib_C_FILES += file21.c file22.c
>>
>> include $(GNUSTEP_MAKEFILES)/library.make
>> ------------------------------------------------------------------------
>>
>>
>> but it does not work.
>>
>> Any solution ?
>>
>> Thx
>>
>> Sincerely
>>
>> Julien
>>
>> _______________________________________________
>> Bug-gnustep mailing list
>> [email protected]
>> http://lists.gnu.org/mailman/listinfo/bug-gnustep
>>
>>
>>
>
_______________________________________________
Bug-gnustep mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnustep

Reply via email to