macOS clion配置pmp-library环境
pmp-library提供了计算机图形学中mesh的half-edge数据结构表示以及一些有效的算法和可视化工具
pmp-library官网
本文将介绍其在mac上的环境配置和在clion中的使用
1.pmp的环境配置
首先在终端中输入如下命令:
git clone --recursive https://github.com/pmp-library/pmp-library.git
等待安装完成后
cd pmp-library
mkdir build
cd build
cmake ..
make
sudo make install
完成后pmp将会被默认安装在/usr/local的lib和include文件夹中,更多的自定义安装选项可以参照官网中的方法进行配置
2.Clion导入pmp
方法一:
CMakeList.txt
cmake_minimum_required(VERSION 3.14) //自动生成
project(项目名称) //自动生成
find_package(pmp)
set(CMAKE_CXX_STANDARD 11) //自动生成
include_directories(pmp)
add_executable(项目名 项目的cpp文件) //自动生成
target_link_libraries(项目名 pmp)
方法二:
CMakeList.txt
cmake_minimum_required(VERSION 3.14) //自动生成
project(项目名称) //自动生成
set(CMAKE_CXX_STANDARD 11) //自动生成
include_directories(/usr/local/include) //pmp所在文件夹
add_executable(项目名 项目的cpp文件) //自动生成
target_link_libraries(项目名 /usr/local/lib/libpmp.dylib) //libpmp.dylib所在路径
若CMakeList没有导入lib可能会出现如下错误:
Undefined symbols for architecture x86_64:
"pmp::SurfaceMesh::add_vertex(pmp::Matrix<float, 3, 1> const&)", referenced from:
_main in main.cpp.o
"pmp::SurfaceMesh::add_triangle(pmp::Vertex, pmp::Vertex, pmp::Vertex)", referenced from:
_main in main.cpp.o
"pmp::SurfaceMesh::SurfaceMesh()", referenced from:
_main in main.cpp.o
"pmp::SurfaceMesh::~SurfaceMesh()", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
3.代码测试
#include <iostream>
#include "pmp/SurfaceMesh.h"
using namespace pmp;
using namespace std;
using Point = pmp::Point;
int main() {
SurfaceMesh mesh;
Vertex v0, v1, v2, v3;
v0 = mesh.add_vertex(Point(0, 0, 0));
v1 = mesh.add_vertex(Point(1, 0, 0));
v2 = mesh.add_vertex(Point(0, 1, 0));
v3 = mesh.add_vertex(Point(0, 0 ,1));
mesh.add_triangle(v0, v1, v3);
mesh.add_triangle(v1, v2, v3);
mesh.add_triangle(v2, v0, v3);
mesh.add_triangle(v0, v2, v1);
cout << "vertices: " << mesh.n_vertices() << std::endl;
cout << "edges: " << mesh.n_edges() << std::endl;
cout << "faces: " << mesh.n_faces() << std::endl;
return 0;
}
运行结果:
vertices: 4
edges: 6
faces: 4