[Libav-user] How to know the output libraries names
lucas.soltic at orange.fr
Fri Sep 6 11:47:04 CEST 2013
Le 6 sept. 2013 à 09:53, Carl Eugen Hoyos <cehoyos at ag.or.at> a écrit :
> Lucas Soltic <lucas.soltic at ...> writes:
>> Is there any reliable way of knowing the names of the
>> libraries that will be created by a standard FFmpeg's
>> configure & make process?
>> On Unix platforms there are ".so" and ".so.version",
>> and on Windows, there are ".dll" and "-version.dll".
> I probably misunderstand but are you suggesting that we
> name the Unix shared libraries *.dll ?
> (Or the Windows shared libraries *.so ?)
No, Linux correctly uses .so and Windows .dll. The annoying point is the version suffix because of course it changes when I update FFmpeg.
>> This makes it hard to use FFmpeg with CMake which
>> requires the library name to be already known at
>> configuration time, in order to add install rules for
> Why are you using CMake?
> And why would linkers be interested in the complete
> file name of the libraries, when I tested last, all
> sane linkers tried different suffixes...
My issue is both an install and runtime library resolution one.
I have a project that relies on CMake and that needs FFmpeg to work. So that everything is integrated in CMake, I did things so that the FFmpeg build is considered as a custom CMake target that will execute FFmpeg's configure & make. And the other part of my project is setup the common way with CMake.
CMake allows adding install rules. But to do so I have to give the exact name of the files that will be installed, and I have to give them before the FFmpeg libraries are built (at CMake configuration time). In case the file to be installed does not exist yet at CMake configuration time, as my custom target create them, CMake knows it first need to execute my custom target and won't complain.
However at the moment on Linux I only tell CMake to install the .so file without any version number because I don't know it. So it'll only install one .so instead of all the .so (links + the real library).
The issue is more or less the same on Windows : I can only know in advance the name of the dll without any version in it. So I install that dll. BUT when using the .lib files produced by FFmpeg's make process with Visual Studio and executing the program, it asks for the dll WITH the version in it. So the dll I installed seems completely useless.
Thanks for your time :)
> Carl Eugen
> Libav-user mailing list
> Libav-user at ffmpeg.org
More information about the Libav-user