Windows 10环境下如何正确构建使用hmatrix的Cabal项目?
问题根因
- 你全局安装hmatrix时指定了
openblas编译flag和对应的库路径,但是在构建自有项目时,Cabal默认没有给依赖的hmatrix传递这些编译参数,会尝试编译默认配置(依赖系统原生blas、lapack)的hmatrix,和你全局安装的版本配置不匹配,因此会触发重新编译,进而找不到依赖库报错。 - 你提到的flag和路径参数是传递给Cabal的依赖构建流程,用来指定hmatrix包的编译选项。
解决步骤
步骤1:添加项目级Cabal配置
在你的测试项目根目录下新建名为cabal.project的文件,写入以下内容:
packages: . package hmatrix flags: +openblas extra-include-dirs: C:\\ghcup\\msys64\\mingw64\\include\\OpenBLAS extra-lib-dirs: C:\\ghcup\\msys64\\mingw64\\bin, C:\\ghcup\\msys64\\mingw64\\lib
该配置会强制Cabal在构建本项目依赖的hmatrix时,使用你指定的编译flag和库路径,和你全局安装时的配置保持一致。
步骤2:添加动态库路径到系统环境变量
将libopenblas.dll所在的目录C:\ghcup\msys64\mingw64\bin添加到Windows系统的PATH环境变量中,避免程序运行时找不到动态链接库。
完成以上操作后重新执行cabal build cabalhmatrix即可正常构建项目。
可选:全局生效配置
如果你希望所有使用hmatrix的项目都默认使用该配置,不需要每个项目单独写cabal.project,可以编辑Cabal用户全局配置文件(路径一般为C:\cabal\config),在文件末尾添加上述package hmatrix的相关配置即可。
内容的提问来源于stack exchange,提问作者Palmik
相关产品推荐
相关产品推荐

