Libigl 示例 102 测试错误
Posted
技术标签:
【中文标题】Libigl 示例 102 测试错误【英文标题】:Libigl example 102 testing error 【发布时间】: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 感谢您的回复。我听从您的建议,并按照以下程序重试:
【参考方案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
肯定失败了。
有什么想法吗?
谢谢。
【讨论】:
以上是关于Libigl 示例 102 测试错误的主要内容,如果未能解决你的问题,请参考以下文章
SAP在提折旧时的错误 在测试时系统报了一个错误: 102A 科目 17020400 不是调整科目 。
LeetCode 451. 根据字符出现频率排序 / 645. 错误的集合 / 726. 原子的数量 / NC52 括号序列 / NC102 最近公共祖先 / NC78 反转链表
Facebook SDK - iOS - 分享 URL 失败(错误 102)