mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 19:32:07 +00:00
![]() A simple HelloWorld program with zero includes except iostream triggers a build of ca. 2000 source files. The reason is that ClickHouse's top-level CMakeLists.txt overrides "add_executable()" to link all binaries against "clickhouse_new_delete". This links against "clickhouse_common_io", which in turn has lots of 3rd party library dependencies ... Without linking "clickhouse_new_delete", the number of compiled files for "HelloWorld" goes down to ca. 70. As an example, the self-extracting-executable needs none of its current dependencies but other programs may also benefit. In order to restore access to the original "add_executable()", the overriding version is now prefixed. There is precedence for a "clickhouse_" prefix (as opposed to "ch_"), for example "clickhouse_split_debug_symbols". In general prefixing makes sense also because overriding CMake commands relies on undocumented behavior and is considered not-so-great practice (*). (*) https://crascit.com/2018/09/14/do-not-redefine-cmake-commands/ |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
dragonbox_test.cpp | ||
hadoop_snappy_read_buffer.cpp | ||
hashing_buffer.h | ||
hashing_read_buffer.cpp | ||
hashing_write_buffer.cpp | ||
io_operators.cpp | ||
limit_read_buffer2.cpp | ||
limit_read_buffer.cpp | ||
lzma_buffers.cpp | ||
o_direct_and_dirty_pages.cpp | ||
parse_date_time_best_effort.cpp | ||
parse_int_perf2.cpp | ||
parse_int_perf.cpp | ||
read_buffer_perf.cpp | ||
read_buffer.cpp | ||
read_escaped_string.cpp | ||
read_float_perf.cpp | ||
read_write_int.cpp | ||
snappy_read_buffer.cpp | ||
test.snappy | ||
valid_utf8_perf.cpp | ||
valid_utf8.cpp | ||
var_uint.cpp | ||
write_buffer_perf.cpp | ||
write_buffer.cpp | ||
write_int.cpp | ||
zlib_buffers.cpp | ||
zlib_ng_bug.cpp | ||
zstd_buffers.cpp |