【问题标题】:flann dependency to matlab - MEXflann 对 matlab 的依赖 - MEX
【发布时间】:2015-05-23 00:17:30
【问题描述】:

当我尝试从 ubuntu 机器上的源代码安装 flann 库时,我遇到了以下错误。

/flann-master/src [72] mkdir 构建

/flann-master/src [73] cd 构建

/flann-master/src/build [74] cmake ..

cpp/CMakeLists.txt:3 (add_definitions) 处的 CMake 警告 (dev): 未设置策略 CMP0005:预处理器定义值现已转义 自动地。运行“cmake --help-policy CMP0005”以获取策略详细信息。采用 cmake_policy 命令设置策略并抑制此警告。 此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

cpp/CMakeLists.txt:114 处的 CMake 错误(安装): 为共享库目标安装没有 LIBRARY DESTINATION 的 TARGETS “flann_cpp”。

CMakeLists.txt 中的 CMake 警告(开发): 不存在 cmake_minimum_required 命令。一行代码如

cmake_minimum_required(2.8 版)

应该添加到文件的顶部。指定的版本可能更低 如果您希望为此项目支持较旧的 CMake 版本。更多 信息运行“cmake --help-policy CMP0000”。 此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

-- 配置不完整,出现错误!

/flann-master/src/build [75]

另一个问题中提到了解决方案。我应该在根目录中(包含 bin、src、examples 等)并且它解决了。我应该运行的文档中还有另一个缺失的部分

进行安装

由于我是远程机器上的 sudoer,我需要将它安装在我的主目录中。因此,我在 flann (flanninstall) 之外创建了一个新目录,并尝试了以下命令。

cmake -DCMAKE_INSTALL_PREFIX=/home/eson/matlab/flanninstall/ ..

我希望它可以帮助我在我的主目录中生成文件,我可以将它们复制或链接到 matlab。 但是,我将此地址中的文件复制到我在 matlab 中处理我的脚本的当前目录。 我仍然得到以下错误。

-> g++-4.4 -c -I/usr/local/MATLAB/2012a/extern/include -I/usr/local/MATLAB/2012a/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fPIC -fno-omit -frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "nearest_neighbors.cpp"

nearest_neighbors.cpp:35:致命错误:flann/flann.h:没有这样的文件或目录 编译终止。

mex: '"nearest_neighbors.cpp"' 的编译失败。

使用 mex 时出错(第 206 行) 无法成功完成。

较早的 @rayryeng 帮助我进行了 MEX 设置,但是当我尝试在命令下运行时,我遇到了较早的问题。

mex -v -O nearest_neighbors.cpp

感谢您的建议。

【问题讨论】:

  • 你必须执行根 CMakeLists.txt。你正在构建/flann-master/src/build [74] cmake ..,即src/CMakeLists.txt,所以这是错误的。您必须将构建文件夹创建到根目录,然后运行它-> /flann-master/build$ cmake ..
  • 谢谢@fenix688,我发现了这一点,并在我的问题中间提到了它。这是我遇到的第一个问题。

标签: c++ matlab ubuntu cmake flann


【解决方案1】:

我刚刚发现我需要在 linux 中为我的用户设置 LD_LIBRARY_PATH。 命令将是:

导出 LD_LIBRARY_PATH="/home/eson/alg/matlab/flanninstall/lib:$LD_LIBRARY_PATH"

如果您在计算机上具有 root 访问权限或 sudo 访问权限,则该路径与您应该添加的正常路径不同。 这将类似于以下行:

导出 LD_LIBRARY_PATH="/Your_build/build/lib:$LD_LIBRARY_PATH"

上述路径不应该完全正确,因为它可能是以 /usr/local/ 或 /usr/include/ 开头的东西。 如果我了解一般情况的确切路径或其他人有完整的答案,我会更新它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多