【问题标题】:Libigl example 102 testing errorLibigl 示例 102 测试错误
【发布时间】:2018-09-04 23:56:26
【问题描述】:

我尝试在 Ubuntu 16.4 上使用 libigl,但在构建示例 102 时遇到了一些错误。

首先,我将 Eigen 安装在 /usr/local/include/Eigen/ 中。

然后,我按照以下命令下载了 libigl 代码:

git clone --recursive https://github.com/libigl/libigl.git

接下来,我尝试构建示例 102。根据这个建议。

The examples can also be built independently using the CMakeLists.txt inside each example folder.

所以在下载源代码后,我直接构建示例 102,而不是通过 /libigl/tutorial/ 中对应的 CMakeLists.txt 构建整个教程。

我喜欢这样: (1) cd 到文件夹:..../libigl/tutorial/102_DrawMesh

(2) mkdir 构建

(3) 光盘构建

(4) cmake ../

cmake ../ 后出现以下错误,似乎找不到../libigl/tutorial/102_DrawMesh 中的CMakeLists.txt 中指定的所需链接库。


以下是错误:

-- C 编译器标识为 GNU 5.4.0 -- CXX 编译器标识为 GNU 5.4.0 -- 检查工作的 C 编译器:/usr/bin/cc -- 检查工作的 C 编译器:/usr/bin/cc -- 工作 -- 检测 C 编译器 ABI 信息 -- 检测 C 编译器 ABI 信息 - 完成 -- 检测 C 编译特性 -- 检测 C 编译特性 - 完成 -- 检查工作的 CXX 编译器:/usr/bin/c++ -- 检查工作的 CXX 编译器:/usr/bin/c++ -- 工作 -- 检测 CXX 编译器 ABI 信息 -- 检测 CXX 编译器 ABI 信息 - 完成 -- 检测 CXX 编译特性 -- 检测 CXX 编译功能 - 在 CMakeLists.txt 中完成 CMake 警告(开发):不存在 cmake_minimum_required 命令。一种 一行代码如

cmake_minimum_required(VERSION 3.5)

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

-- 在 CMakeLists.txt:4 (add_executable) 处配置完成的 CMake 警告 (dev):未设置策略 CMP0028:目标中的双冒号 名称表示 ALIAS 或 IMPORTED 目标。运行“cmake --help-policy CMP0028”获取策略详细信息。使用 cmake_policy 命令设置 政策并禁止显示此警告。

目标“102_DrawMesh_bin”链接到目标“igl::core”,但目标 没有找到。可能缺少 find_package() 调用 IMPORTED 目标,还是缺少 ALIAS 目标?此警告适用于 项目开发商。使用 -Wno-dev 来抑制它。

CMakeLists.txt:4 (add_executable) 中的 CMake 警告 (dev):策略 未设置 CMP0028:目标名称中的双冒号表示 ALIAS 或
导入的目标。为策略运行“cmake --help-policy CMP0028” 细节。使用 cmake_policy 命令设置策略并抑制 这个警告。

目标“102_DrawMesh_bin”链接到目标“igl::opengl”,但 未找到目标。可能缺少 find_package() 调用 IMPORTED 目标,还是缺少 ALIAS 目标?这个警告是 对于项目开发人员。使用 -Wno-dev 来抑制它。

CMakeLists.txt:4 (add_executable) 中的 CMake 警告 (dev):策略 未设置 CMP0028:目标名称中的双冒号表示 ALIAS 或
导入的目标。为策略运行“cmake --help-policy CMP0028” 细节。使用 cmake_policy 命令设置策略并抑制 这个警告。

目标“102_DrawMesh_bin”链接到目标“igl::opengl_glfw”,但 未找到目标。可能缺少 find_package() 调用 IMPORTED 目标,还是缺少 ALIAS 目标?这个警告是 对于项目开发人员。使用 -Wno-dev 来抑制它。

-- 生成完成 -- 构建文件已写入:/home/chayfung/Workspace/Mesh/libigl/tutorial/102_DrawMesh/build


谁能给我一些建议?

谢谢。

【问题讨论】:

  • 那4行CMakeLists.txt绝对不能独立构建:github.com/libigl/libigl/blob/…。不知道为什么文档会这样说。您可以构建父 CMakeLists.txt(对应于教程中的所有示例),并在其中注释未定义的示例。请注意,您可以通过将选项TUTORIALS_CHAPTER<N> 设置为关闭来禁用某些章节的示例。例如,将选项 -DTUTORIALS_CHAPTER2=OFF 传递给 cmake 以禁用第 2 章中的示例。
  • @Tsyvarev 感谢您的回复。我听从您的建议,并按照以下程序重试:

标签: ubuntu cmake libigl


【解决方案1】:

我不知道你是否已经解决了。但是它们可以独立构建,因为在 cmake 与其他所有内容之后,build/make 过程可以独立完成。

请按照指示执行常规步骤。

cd libigl/tutorial
mkdir build
cd build
cmake ../

您可以修改tutorial 中的CMakeLists.txt 以仅创建您想要的目录,或使用ccmake ../ 做一些临时的事情。

【讨论】:

    【解决方案2】:

    (1) 把原来的源代码去掉重新下载,生成一个新的文件夹libigl,定位到/mesh/libigl

    (2)cd到教程/libigl/tutorial/

    (3) 更改位于/libigl/tutorial/ 中的CMakeList.txt。我只是禁用了示例章节的所有选项,请参见下图。

    tutorial_CMakeLists_txt-1

    tutorial_CMakeLists_txt-2

    tutorial_CMakeLists_txt-3

    tutorial_CMakeLists_txt-4

    (4)mkdir build

    (5)cd build

    (6)cmake ../

    (7)make

    (8) 在路径/mesh/libigl/tutorial/build/ 中,我得到了以下.a 库。请参见下图。同样在子文件夹中,还会生成额外的.a 库。

    tutorial_build_libraries

    (9) cd 到路径 /mesh/libigl/tutorial/102_DrawMesh/

    (10)mkdir build

    (11)cd build

    (12)cmake ../

    执行cmake ../后,出现以下错误,似乎有些库仍未找到。见下图。

    cmake_error-1

    cmake_error-2

    所以,make 肯定失败了。

    有什么想法吗?

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2017-11-20
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2014-05-14
      相关资源
      最近更新 更多