diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 6e0629b2b16b2ee090d03ec2576ddd4c2c6b551a..4f6a9a769dc948cadf634c41cb3eae9e9f73a438 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -4,5 +4,16 @@ SET(DOXYGEN_GENERATE_XML        "YES"              PARENT_SCOPE)
 SET(DOXYGEN_EXPAND_ONLY_PREDEF  "NO"               PARENT_SCOPE)
 SET(DOXYGEN_ENABLE_PREPROCESSING "YES" PARENT_SCOPE)
 SET(DOXYGEN_MACRO_EXPANSION      "YES" PARENT_SCOPE)
+SET(DOXYGEN_EXCLUDE "${PROJECT_SOURCE_DIR}/include/hpp/")
+
+# We must not document octree if Octomap is not setup.
+# This create a build issue when building the bindings because doxygen-autodoc will
+# include octree.h that will include octomap.h.
+IF(NOT COAL_HAS_OCTOMAP)
+  SET(DOXYGEN_EXCLUDE "${DOXYGEN_EXCLUDE} ${PROJECT_SOURCE_DIR}/include/coal/octree.h")
+  SET(DOXYGEN_EXCLUDE "${DOXYGEN_EXCLUDE} ${PROJECT_SOURCE_DIR}/include/coal/serialization/octree.h")
+  SET(DOXYGEN_EXCLUDE "${DOXYGEN_EXCLUDE} ${PROJECT_SOURCE_DIR}/include/coal/internal/traversal_node_octree.h")
+ENDIF()
+SET(DOXYGEN_EXCLUDE ${DOXYGEN_EXCLUDE} PARENT_SCOPE)
 
 SET(DOXYGEN_PREDEFINED          "IS_DOXYGEN"       PARENT_SCOPE)