创建一个包含所有deps的GraphicsMagick静态版本?

时间:2018-04-07 17:40:41

标签: windows macos build graphicsmagick

我浏览了一下Google,看看我是否能找到一个静态构建的GraphicsMagick,其中包含所有可能的文件类型支持,并且(理想情况下)内置dcraw

理想情况下,它完全是自包含的,基本上是可移植的。

我只是对macOS和Windows感到困扰(GraphicsMagick网站表明Windows版本已经像这样构建了 - 虽然我不确定dcraw)。

我是一名网络开发者,希望在Electron应用程序中使用它,所以我不确定正确的术语,所以请原谅上面的乱码中的任何不准确之处。

1 个答案:

答案 0 :(得分:0)

对于Mac,我使用以下脚本创建包含png,jpg和webp的静态版本:

# download sources
curl -L http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/1.3/GraphicsMagick-1.3.31.tar.gz | tar xvz
# zlib needed for png
curl -L http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/delegates/zlib-1.2.11.tar.gz | tar xvz
curl -L http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/delegates/libpng-1.6.28.tar.gz | tar xvz
curl -L http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/delegates/libwebp-1.0.0.tar.gz | tar xvz
curl -L http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/delegates/jpegsrc.v6b2.tar.gz | tar xvz

export mydir=$(pwd)
export CPPFLAGS="-I$mydir/include"
export LDFLAGS="-L$mydir/lib"

# use `less zlib-<TAB>/configure` to discover configure options
(cd zlib-*           && ./configure --static                             --prefix=$mydir && make install)
(cd libpng-*         && ./configure --disable-shared                     --prefix=$mydir && make install)
(cd libwebp-*        && ./configure --disable-shared --enable-libwebpmux --prefix=$mydir && make install)
(cd jpeg-*           && ./configure --disable-shared                     --prefix=$mydir && make install)
(cd GraphicsMagick-* && ./configure --disable-installed                  --prefix=$mydir && make install)
./bin/gm version
ldd ./bin/gm

# test
mkdir test && cd test
cp ../jpeg-6b2/testimg.bmp ./test.bmp
../bin/gm convert test.bmp jpg.jpg
../bin/gm convert jpg.jpg jpg.bmp
../bin/gm convert test.bmp png.png
../bin/gm convert png.png png.bmp
../bin/gm convert test.bmp webp.webp
../bin/gm convert webp.webp webp.bmp

如果需要,您可以以此为起点开始包含更多库。我的用例还包括将其包含在电子中。在尝试对静态Windows版本进行交叉编译后,我得出的结论是,对于Windows版本,使用正式提供的预编译多文件版本会减少维护成本。