msys2-i686-20180531 と Visual Studio 2013 update 5 で確認。
異常に手間がかかったので、健忘録として記載。
※ MinGW の gcc でもビルドできるけど、一部の依存ライブラリが GPL になるので MSVC でビルドする。なお基本的な方法は ffmpeg の wiki に記載があるです。
https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
スタティックリンクしなければ libgcc は LGPL 扱いになるので MinGW でもビルド可能な模様。
libmp3lame のビルド
- lame のソースコードを sourceforge からダウンロードして解凍する
https://sourceforge.net/projects/lame/files/lame/ - 解凍先の
vc_solution/vp9_lame.sln
を Visual Studio で開いて Release 版をビルドする
※ ビルド時に gtk が不足しているメッセージが表示されるけど、無視して OK - 解凍先の include ディレクトリ内のヘッダファイルを、MSVC のインクルードパスへ
#include <lame/lame.h>
でインクルードできるようにコピーする - ビルド時に生成された
output/Release/libmp3lame.*
を MSVC のライブラリパスへコピーする
FFmpeg のビルド環境の準備
- configure を実行するために、msys2 をダウンロードしてインストールする
https://www.msys2.org/ - インストール後、パッケージの更新と必要ソフトウェアのインストールを行う
# msys2 をはじめて使う場合はパッケージの更新が必要
$ pacman -Syuu
# パッケージ更新時 msys2 の再起動を求められた場合は、再起動後 y を抜いて更新を再開
$ pacman -Suu
# 更新が完了したら必要なソフトウェアをインストール
$ pacman -S diffutils make pkg-config yasm
FFplay も必要な場合
- ビルドに必要となる SDL2 の最新版を github のミラーなどから取得する
https://github.com/SDL-mirror/SDL - 取得した最新版の
VisualC/SDL.sln
を Visual Studio で開いて Release 版をビルドする。 - ビルド後 sdl2-config ファイルを msys2 の PATH(
/usr/bin
など)へ作成し、sdl2 の include ディレクトリとビルドしたライブラリへのパスを設定する。
sdl2-config
#! /bin/sh
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=0
SDL_MICRO_VERSION=5
includedir='C:\\\\SDL2\\\\include' # include ファイルへのパス
SDL_CFLAGS=
libdir='C:\\\\SDL2\\\\lib' # ビルドしたライブラリへのパス
SDL_RLD_FLAGS=
SDL_LIBS="-lSDL2"
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
while test $# -gt 0; do
case $1 in
--cflags)
echo -I${includedir} ${SDL_CFLAGS}
;;
--libs)
echo /LIBPATH:${libdir} ${SDL_RLD_FLAGS} ${SDL_LIBS}
;;
--version)
echo ${SDL_VERSION}
;;
esac
shift
done
FFmpeg のビルド
- VS2013 x** Nativa Tools Command Prompt を実行する
- msys2 を実行する
C:\hoge\fuga>c:\msys32\msys2_shell.cmd
- FFmpeg のソースコードを github のミラーなどから取得する
https://github.com/FFmpeg/FFmpeg - Visual Studio のパスを export する
export PATH="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin":$PATH
- FFmpeg のディレクトリへ移動し configure 〜 make を実行する
$ cd path/to/ffmpeg
$ ./configure --enable-libmp3lame --enable-shared --toolchain=msvc
$ make
生成された ffmpeg.exe
と lib*/lib*.dll
、libmp3lame.dll
、SDL2.dll
を同じディレクトリにコピーして完了。