[gdal-dev] Build question: GDAL with libwebp....

Carl Godkin cgodkin at gmail.com
Wed Feb 14 15:42:46 PST 2024


Hi Kai,

> To pass lists into cmake, you usually need ';' as item separator.

Thanks for the suggestion.  I am sure I am missing something but inserting
a semi-colon on the Linux command line appears to require it be escaped.

When I pass this:

   -DWEBP_INCLUDE_DIR:PATH=/usr/local/devlibs/libwebp-1.3.2/include \
   -DWEBP_LIBRARY=/usr/local/devlibs/libwebp-1.3.2/lib64/libwebp.a\;/usr/local/devlibs/libwebp-1.3.2/lib64/libsharpyuv.a
\

the link line comes out with the semi-colon (and also quoted):


 "/usr/local/devlibs/libwebp-1.3.2/lib64/libwebp.a;/usr/local/devlibs/libwebp-1.3.2/lib64/libsharpyuv.a"

Or were you suggesting a different syntax?

I do not really understand the second part of your reply but I'm not using
vcpkg; I'm trying to use cmake at the command line (and trying to build on
both Windows and Linux).

Maybe most people using libwebp just let cmake find it on their system
somehow?

My workaround, in case someone else is interested, is to do this

   -DWEBP_INCLUDE_DIR:PATH=/usr/local/devlibs/libwebp-1.3.2/include \
   -DWEBP_LIBRARY=/usr/local/devlibs/libwebp-1.3.2/lib64/libwebp.a \
   -DCMAKE_CXX_STANDARD_LIBRARIES=/usr/local/devlibs/libwebp-1.3.2/lib64/libsharpyuv.a
\

Now libsharpyuv is included in every link line which works but isn't quite
right.  (I have also hand-edited the generated link line but I was looking
for a scriptable solution.)

Thanks,
carl


On Tue, Feb 13, 2024 at 11:29 PM Kai Pastor, DG0YT via gdal-dev <
gdal-dev at lists.osgeo.org> wrote:

> To pass lists into cmake, you usually need ';' as item separator.
> (Exception: CMAKE_<lang>_FLAGS which is a command line fragment with
> space-separated items.)
>
> In vcpkg, webp is configured via a CMAKE_PROJECT_INCLUDE file:
>
> if(GDAL_USE_WEBP)
>     find_package(WebP CONFIG REQUIRED)
>     add_library(WEBP::WebP ALIAS WebP::webp)
>     set(GDAL_CHECK_PACKAGE_WebP_NAMES WebP CACHE INTERNAL "vcpkg")
>     set(GDAL_CHECK_PACKAGE_WebP_TARGETS WebP::webp CACHE INTERNAL "vcpkg")
> endif()
>
> Kai
>
> Am 14.02.24 um 01:13 schrieb Carl Godkin via gdal-dev:
>
> Hi Andrew,
>
> Thanks for replying.  I am not looking for ways to edit CMakeLists.txt
> files, especially since I don't really understand the syntax.
>
>  I was just hoping that someone who had built GDAL with WEBP enabled would
> tell me how to specify both libraries to cmake on the command line.
>
> Sorry I over-complicated my question!
>
> carl
>
> On Tue, Feb 13, 2024 at 10:45 AM Andrew C Aitchison <
> andrew at aitchison.me.uk> wrote:
>
>> On Tue, 13 Feb 2024, Carl Godkin via gdal-dev wrote:
>>
>> > Hi,
>> >
>> > Sorry if this is an elementary cmake question but I am curious if there
>> is
>> > a cleaner solution than I came up with.
>> >
>> > I'm trying to build GDAL 3.8.3 with WEBP support.
>> >
>> > I built libwebp 1.3.2 (the latest) without any problems, also using
>> cmake.
>> >
>> > However, when building GDAL, the link on the shared library fails since
>> > WEBP seems to require TWO libraries (in the libwebp package), libwebp
>> and
>> > libsharpyuv.
>> >
>> > My question is how can I persuade cmake to accept both libraries for
>> > WEBP_LIBRARY?
>> >
>> > I thought quotes would help.  What I think I ought to be able to do is
>> > something like
>> >
>> >   -DWEBP_LIBRARY="/usr/local/devlibs/libwebp-1.3.2/lib64/libwebp.a
>> > /usr/local/devlibs/libwebp-1.3.2/lib64/libsharpyuv.a" \
>> >
>> > or else
>> >
>> >   "-DWEBP_LIBRARY=/usr/local/devlibs/libwebp-1.3.2/lib64/libwebp.a
>> > /usr/local/devlibs/libwebp-1.3.2/lib64/libsharpyuv.a" \
>> >
>> > but both options produce link lines that include the double quotes!
>> This
>> > is an issue on Windows and Linux for me.
>>
>> CMAKE is rather more verbose than that.
>>
>> Compare
>>     gdal/frmts/webp/CMakeLists.txt
>> with
>>     gdal/frmts/png/CMakeLists.txt
>> for how the png driver uses libpng and zlib
>>
>> You probably don't need the gdal_add_vendored_lib commands or the
>> GDAL_USE_..._INTERNAL tests, since gdal is not bundling libwebp.
>>
>> > I have a couple of workarounds that I won't bore you with, but I was
>> > wondering what the best practice is here (other than hand-editing the
>> cmake
>> > output of course).
>> >
>> > I think that libwebp added the "sharpyuv" stuff at version 1.3.0 so
>> perhaps
>> > using an older version would also work, but that doesn't seem
>> sustainable.
>> >
>> > Thanks for suggestions,
>> >
>> > carl
>> >
>>
>> --
>> Andrew C. Aitchison                      Kendal, UK
>>                     andrew at aitchison.me.uk
>>
>
> _______________________________________________
> gdal-dev mailing listgdal-dev at lists.osgeo.orghttps://lists.osgeo.org/mailman/listinfo/gdal-dev
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20240214/f910e458/attachment.htm>


More information about the gdal-dev mailing list