我正在开发一个 C++ 项目,我已经在使用 Eigen 库。
我现在想添加允许我构建表面网格的库。我考虑过 CGAL,但它对于我的需要来说似乎太沉重和复杂。所以我找到了多边形网格处理库或PMP,这可能会很好地完成工作。
PMP 的问题在于它已经依赖于 Eigen(参见here)。
所以当我将根
CMakeLists.txt
更改为:
# Add Eigen using CPM
CPMAddPackage(
NAME Eigen
GITLAB_REPOSITORY libeigen/eigen
GIT_TAG 3.4
OPTIONS
"EIGEN_BUILD_DOC OFF" # Do not build documentation
"EIGEN_BUILD_PKGCONFIG OFF" # Optional, disables pkg-config
"BUILD_TESTING OFF" # Disable building and running tests
)
# Add PMP library using CPM
CPMAddPackage(
NAME PMP
GITHUB_REPOSITORY pmp-library/pmp-library
GIT_TAG 3.0.0 # Specify the version you need, or leave it out for the latest
)
我遇到错误
CMake Error at cmake-build-debug/_deps/pmp-src/examples/CMakeLists.txt:16 (add_executable):
add_executable cannot create target "eigen" because another target with the
same name already exists. The existing target is an interface library
created in source directory.
See documentation for policy CMP0002 for more details.
我显然不是 CMake 专家。有解决办法吗?我可以说服 PMP 使用我的 Eigen 实例吗?我是否必须找到一个独立于 Eigen 的不同的网格划分库?
pmp-library 的 CMakeLists.txt 包含 此片段:
if(NOT DEFINED EIGEN3_INCLUDE_DIR)
set(EIGEN3_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/external/eigen-3.4.0")
endif()
find_package(Eigen3 3.4.0 REQUIRED)
如果您在
CPMAddPackage
调用中设置此变量,pmp-library 将使用您的 eigen 副本而不是发送自己的。