Repository navigation
Commit b88b893
fix(cmake): generate version.h under PROJECT_BINARY_DIR to support add_subdirectory() builds (#906)
CMakeLists.txt generates the versioned header at
${CMAKE_BINARY_DIR}/src/iceberg/version.h, but the include path used
to compile the iceberg target (ICEBERG_INCLUDES in
src/iceberg/CMakeLists.txt) is ${PROJECT_BINARY_DIR}/src. This change
makes both consistently use PROJECT_BINARY_DIR.
When iceberg-cpp is built as the top-level project, CMAKE_BINARY_DIR
and PROJECT_BINARY_DIR happen to be the same directory, so this
mismatch is invisible.
When iceberg-cpp is consumed via add_subdirectory() from another
CMake project (e.g. vendoring it under third/iceberg-cpp/),
CMAKE_BINARY_DIR resolves to the outermost project's build directory,
while PROJECT_BINARY_DIR correctly resolves to the build directory
nested under the outer project (e.g.
<outer_build_dir>/third/iceberg-cpp/). The generated version.h then
ends up in the wrong place and any translation unit that does
#include "iceberg/version.h" (e.g. catalog/rest/constant.h,
deletes/dv_util.cc, deletes/dv_writer.cc) fails with a missing header
when building as a nested dependency.
Co-authored-by: joeyyjwang <joeyyjwang@tencent.com>1 parent 8e1cb7a commit b88b893
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
0 commit comments