A blank project example showing how to use libigl and cmake. Feel free and encouraged to copy or fork this project as a way of starting a new personal project using libigl.
Compile this project using the standard cmake routine:
mkdir build
cd build
cmake ..
make
This should find and build the dependencies and create a example
binary.
From within the build
directory just issue:
./example
A glfw app should launch displaying a 3D cube.
This example project uses the igl::opengl::glfw::Viewer
, therefore it requires
the glfw module of libigl. This shows up in the CMakeLists.txt
igl_include(glfw)
…
target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw)
Suppose you also wanted to use the triangle module in libigl. Then you would change these to
igl_include(glfw)
igl_include(restricted triangle)
…
target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw igl_restricted::triangle)
The "restricted" appears in this case because the triangle library has a more restricted license than libigl. See other examples commented out in CMakeLists.txt.
The only dependencies are STL, Eigen, libigl and the dependencies
of the igl::opengl::glfw::Viewer
(OpenGL, glad and GLFW).
The CMake build system will automatically download libigl and its dependencies using CMake FetchContent, thus requiring no setup on your part.
You can use the CMake cache variable FETCHCONTENT_SOURCE_DIR_LIBIGL
when configuring your CMake project for
the first time to aim it at a local copy of libigl instead.
cmake -DFETCHCONTENT_SOURCE_DIR_LIBIGL=<path-to-libigl> ..
When changing this value, do not forget to clear your CMakeCache.txt
, or to update the cache variable
via cmake-gui
or ccmake
.