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环境下,执行以下命令:
- 创建并进入构建目录:
mkdir build && cd build
- 运行CMake(指定g++-10作为编译器):
cmake .. -DCMAKE_CXX_COMPILER=g++-10
- 编译项目:
make -j$(nproc)
补充说明
官方示例中看不到add_subdirectory是因为libigl.cmake引导脚本已经自动处理了libigl的引入逻辑(要么通过子目录构建源码,要么查找预编译包),但核心还是遵循了新版本不直接引用libigl.cmake的规则。
内容的提问来源于stack exchange,提问作者HEKTO
相关产品推荐
相关产品推荐

