mlpack 包含文件错误

mlpack include file errors

最近准备学习mlpack。今天我已经成功地从 mlpack 源代码构建了解决方案,但是当我新创建一个项目时,头文件中出现以下错误。我想知道出了什么问题以及如何解决它。

errors

截图中,algorithm.hpp在build文件夹下,绝对路径为D:\MLPack\mlpack\build\include\mlpack\core\std_backport\algorithm.hpp。新项目中的源代码只是 https://www.mlpack.org/.

的副本

下面的屏幕截图显示了 mlpack.sln.

构建解决方案后生成的一些文件

generated libs

帮助构建 mlpack 的其他库的版本是:

Armadillo      10.8.0 (at least 9.800)
Boost (math_c99, spirit) 1.78.0 (at least 1.58.0, and I have added this version string in  CMakeLists.txt before building mlpack)
CMake          3.20 (at least 3.6)
ensmallen      2.18.1 (at least 2.10.0)
cereal         1.3.0 (at least 1.1.2)
openBLAS       0.24.1

我的新项目的配置如下所示。

additional include directories

additional dependencies

post-build event

而且我还禁用了“一致性模式”。

disabled conformance mode

整个搭建和使用过程参考https://www.mlpack.org/doc/stable/doxygen/build_windows.htmlhttps://www.mlpack.org/doc/mlpack-3.4.2/doxygen/sample_ml_app.html

终于发现这个问题好像和源码的版本有关。我不应该使用来自https://github.com/mlpack/mlpack的最新版本源代码,而是对应最新稳定版本的源代码。我将include目录替换为官方发布的windows安装包对应的include目录后,在我的新项目中构建解决方案时没有报错,得到了预期的结果。

the result

这件事给了我一个教训,以后做CMake时应该使用稳定版的源码,而不是最新版的源码。