Установите ffmpeg-light с кабалой

Я хочу установить библиотеку ffmpeg-light от hackage через cabal на Windows 10 (64 бит). Поэтому я скачал ffmpeg и распаковал его в C:\FFmpeg.

Сначала pkg-config жаловался, что не может найти различные пакеты. Я решил эту проблему с файлами .pc.

Когда я попытался использовать команду: cabal install ffmpeg-light cabal пожаловался на отсутствие C-библиотек, а именно тех, для которых я создал файлы .pc.

Затем я попробовал команду: cabal install ffmpeg-light --extra-lib-dirs=C:\FFmpeg\lib. Теперь у меня другое сообщение об ошибке, в котором говорится:

Enums.hsc:7:32: fatal error: libavcodec/avcodec.h: No such file or directory

Редактировать:
Затем я попробовал следующую команду:

cabal install ffmpeg-light --extra-lib-dirs=C:\FFmpeg\lib \
                           --extra-include-dirs=C:\FFmpeg\include

Сначала компилятор выдает предупреждения об устаревших функциях в ffmpeg и избыточном импорте в ffmpeg-light, но компилирует 11 из 11. Но сборка по-прежнему не удалась.

In-place registering ffmpeg-light-0.11.1...
setup-Simple-Cabal-1.22.5.0-x86_64-windows-ghc-7.10.3.exe:
'C:\Haskell\bin\ghc-pkg.exe' exited with an error:
ffmpeg-light-0.11.1: Warning: haddock-interfaces:
C:\Users\HOLEYC~1\AppData\Local\Temp\cabal-tmp-2824\ffmpeg-light-0.11.1\dist\doc\html\ffmpeg-light\ffmpeg-light.haddock
doesn't exist or isn't a file
ffmpeg-light-0.11.1: Warning: haddock-html:
C:\Users\HOLEYC~1\AppData\Local\Temp\cabal-tmp-2824\ffmpeg-light-0.11.1\dist\doc\html\ffmpeg-light
doesn't exist or isn't a directory
ffmpeg-light-0.11.1: library-dirs: C:FFmpeglib is a relative path which makes
no sense (as there is nothing for it to be relative to). You can make paths
relative to the package database itself by using ${pkgroot}. (use --force to
override)
ffmpeg-light-0.11.1: include-dirs: C:FFmpeginclude is a relative path which
makes no sense (as there is nothing for it to be relative to). You can make
paths relative to the package database itself by using ${pkgroot}. (use
--force to override)
cabal: Error: some packages failed to install:
ffmpeg-light-0.11.1 failed during the building phase. The exception was:
ExitFailure 1

Некоторая дополнительная информация:

cabal version: cabal-install version 1.22.6.0
using version 1.22.5.0 of the Cabal library
gcc version of my installed Haskell platform: 5.2.0

Пример файла .pc, который я использовал для pkg-config:

Name: libavcodec
Description: Library for ffmpeg
Version: 57
Cflags: -IC:\FFmpeg\include
Libs: -LC:\FFmpeg\lib -llibavcodec

person WirflBirfl    schedule 20.09.2016    source источник
comment
Вам нужно --extra-include-dirs, чтобы указать ghc, где найти заголовочный файл.   -  person Thomas M. DuBuisson    schedule 20.09.2016
comment
@Thomas M. DuBuisson: Спасибо, это продвинуло меня на шаг вперед. Отредактировал мой вопрос.   -  person WirflBirfl    schedule 20.09.2016
comment
Я думаю, вам нужно избегать косых черт. Пример: --extra-include-dirs=C:\\FFmpeg\\include   -  person Thomas M. DuBuisson    schedule 20.09.2016


Ответы (1)


ХОРОШО. Я понял. Требовался параметр --ghc-pkg-options="--force".

cabal install ffmpeg-light --extra-lib-dirs=C:\FFmpeg\lib --extra-include-dirs=C:\FFmpeg\include --ghc-pkg-options="--force"

person WirflBirfl    schedule 20.09.2016