Problem
SnapshotUtil provides essential snapshot operations (ancestry traversal, time-travel queries, schema lookup) that consumers using iceberg-cpp via find_package(iceberg) need. The class is marked ICEBERG_EXPORT (public ABI), but the header file is named snapshot_util_internal.h. The iceberg_install_all_headers CMake function skips filenames containing "internal", so the header is never installed.
Consumers using iceberg-cpp as an installed package (rather than via add_subdirectory) cannot include SnapshotUtil without vendoring a copy of the header.
Error
fatal error: 'iceberg/util/snapshot_util_internal.h' file not found
32 | #include "iceberg/util/snapshot_util_internal.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
The include path points to the installed headers directory, which does not contain the file because the install function filtered it out:
-isystem build/debug/_iceberg_install/include
Root cause
In cmake_modules/IcebergBuildUtils.cmake, iceberg_install_all_headers globs *.h and excludes filenames matching *internal*. The header snapshot_util_internal.h is excluded despite the class being explicitly ICEBERG_EXPORT.
Problem
SnapshotUtilprovides essential snapshot operations (ancestry traversal, time-travel queries, schema lookup) that consumers using iceberg-cpp viafind_package(iceberg)need. The class is markedICEBERG_EXPORT(public ABI), but the header file is namedsnapshot_util_internal.h. Theiceberg_install_all_headersCMake function skips filenames containing "internal", so the header is never installed.Consumers using iceberg-cpp as an installed package (rather than via
add_subdirectory) cannot includeSnapshotUtilwithout vendoring a copy of the header.Error
The include path points to the installed headers directory, which does not contain the file because the install function filtered it out:
Root cause
In
cmake_modules/IcebergBuildUtils.cmake,iceberg_install_all_headersglobs*.hand excludes filenames matching*internal*. The headersnapshot_util_internal.his excluded despite the class being explicitlyICEBERG_EXPORT.