我正在尝试构建一个Haskell Stack项目,其extra-deps
包含opencv
,它本身依赖于OpenCV 3.0(目前只能从源代码构建)。
我遵循Docker integration指南,并使用我自己的fpco/stack-build:lts-9.20
构建的图像并安装OpenCV 3.0(Dockerfile.stack.opencv
)。
如果我制作了自己的图片,我可以确认opencv
已安装并pkg-config
可见:
$ docker build -t stack-opencv -f Dockerfile.stack.opencv .
$ docker run stack-opencv pkg-config --modversion opencv
3.3.1
但是,如果我在stack.yml
中指定此图片:
docker:
image: stack-opencv
尝试stack build
收益:
Configuring opencv-0.0.2.0...
setup: The pkg-config package 'opencv' version >=3.0.0 is required but it
could not be found.
我在没有Docker集成的情况下运行构建,并且它成功完成。
答案 0 :(得分:0)
Dockerfile
正在传递CMAKE_INSTALL_PREFIX=$HOME/usr
。
运行docker build
时,会使用root
用户,因此$HOME
设置为/root
。
但是,在使用stack build
stack
用户时,他们无权查看/root
,因此pkg-config
无法找到opencv
。< / p>
通过从-D CMAKE_INSTALL_PREFIX=$HOME/usr
删除cmake
标记,将使用默认前缀(/usr/local
)。 stack
用户也可以访问此内容,因此pkg-config
可以在stack build
期间找到它。