pkg-config and Mono, was: Re: [Mono-devel-list] GAC issues and third party libraries.
Paul Thomas
PTHOMAS at novell.com
Wed May 5 16:32:05 EDT 2004
>>> Miguel de Icaza <miguel at novell.com> 5/3/2004 12:36:31 PM >>>
> Alternatively, more elite users can do:
>
> mcs `pkg-config --libs gtk-sharp` hello.cs
>
When I run 'pkg-config --libs mono' I get:
-Wl,--export-dynamic -pthread -L/opt/gnome/lib -lmono -lpthread -lm
-lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0
These appear to be the library options to pass into gcc, not mcs.
I would like to use a .pc file to set, and pkg-config to get, the /lib:
and /r: options for my Mono projects. I first looked into using .Libs
in the .rc file to define the /lib: and /r: options, and 'pkg-config
--libs' to get them. However, 'pkg-config --libs' returns my options
merged with the mono options shown above. This is because in my .pc
file I also have:
Requires: mono >=0.31
The pkg-config man page says this about the --libs option:
"This option is identical to "--cflags", only it prints the link
flags. As with "--cflags", duplicate flags are merged (maintaining
proper ordering), and flags for dependencies are included in the
output."
Because I require mono, the mono "libs" options, as well as the "libs"
options of all of its dependencies, are being included. This wouldn't
be a problem except that these are gcc-like options, not mcs options.
It doesn't seem safe to me to re-use --libs for both C and Mono
compiler options.
Instead, I'm thinking of defining the following variable in my .pc
files:
MONO_LIBS=/lib:${libdir} /r:myassembly1.dll /r:myassembly2.dll
I can then use 'pkgconfig --variable=MONO_LIBS mypackage' to get these
values.
Pro:
1. I can get my Mono compiler options without worrying about
contamination with C compiler options from dependencies.
2. If my package also supports C APIs, I can continue to use --cflags
and --libs in the traditional way.
Con:
1. I don't automatically get merged Mono compiler options from
dependencies.
2. I'm inventing my own mechanism and not using a standard one.
Is the there a prescribed or de-facto standard for using pkg-config for
Mono-based packages? Are there plans to modify pkg-config to support
Mono?
Any guidance will be appreciated.
Thanks,
Paul
More information about the Mono-devel-list
mailing list