You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

libigl 2.4.0升级后无法构建,求Ubuntu环境下正确CMake配置方法

解决libigl 2.4.0在Ubuntu 20.04下的构建问题

错误原因

libigl 2.4.0彻底废弃了直接通过find_package引用libigl.cmake的旧方式,必须改用子目录引入或官方提供的引导脚本方式。

两种正确构建方案

方案一:直接用add_subdirectory引入libigl源码

这种方式最直接,适合已下载好libigl源码的场景:

cmake_minimum_required(VERSION 3.16)
# 替换为你的项目名称
project(your_test_project)

# 指定libigl源码路径
set(LIBIGL_HOME $ENV{HOME}/apps/libigl)
# 将libigl作为子目录引入,自动构建所需组件
add_subdirectory(${LIBIGL_HOME} ${CMAKE_BINARY_DIR}/libigl)

# 按需启用libigl组件,比如glfw(根据项目需求调整)
igl_include(glfw)

# 添加你的项目源文件(建议明确列出,避免GLOB的潜在问题)
add_executable(${PROJECT_NAME} main.cpp)

# 链接libigl组件到可执行文件
target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw)

方案二:使用官方示例的引导脚本方式

官方示例中的include(libigl)本质是通过引导脚本处理libigl的引入,无需手动写add_subdirectory:

cmake_minimum_required(VERSION 3.16)
project(your_test_project)

# 将libigl的cmake目录加入模块路径
set(LIBIGL_HOME $ENV{HOME}/apps/libigl)
list(PREPEND CMAKE_MODULE_PATH ${LIBIGL_HOME}/cmake)

# 加载libigl引导脚本
include(libigl)

# 启用需要的组件,比如glfw
igl_include(glfw)

# 添加你的源文件
add_executable(${PROJECT_NAME} main.cpp)

# 链接组件
target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw)

构建步骤

在Ubuntu 20.04.5 LTS + g++ 10.3.0环境下,执行以下命令:

  1. 创建并进入构建目录:
mkdir build && cd build
  1. 运行CMake(指定g++-10作为编译器):
cmake .. -DCMAKE_CXX_COMPILER=g++-10
  1. 编译项目:
make -j$(nproc)

补充说明

官方示例中看不到add_subdirectory是因为libigl.cmake引导脚本已经自动处理了libigl的引入逻辑(要么通过子目录构建源码,要么查找预编译包),但核心还是遵循了新版本不直接引用libigl.cmake的规则。

内容的提问来源于stack exchange,提问作者HEKTO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:15:34