mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 23:52:03 +00:00
1a7727a254
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/
24 lines
889 B
CMake
24 lines
889 B
CMake
clickhouse_add_executable(graphite-rollup-bench graphite-rollup-bench.cpp)
|
|
target_link_libraries(
|
|
graphite-rollup-bench
|
|
PRIVATE
|
|
clickhouse_storages_system
|
|
clickhouse_aggregate_functions
|
|
clickhouse_common_config
|
|
dbms
|
|
)
|
|
target_include_directories(
|
|
graphite-rollup-bench
|
|
SYSTEM PRIVATE
|
|
${ClickHouse_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src
|
|
${ClickHouse_SOURCE_DIR}/base ${ClickHouse_SOURCE_DIR}/base/pcg-random
|
|
${CMAKE_BINARY_DIR}/src/Core/include
|
|
${POCO_INCLUDE_DIR}
|
|
${ClickHouse_SOURCE_DIR}/contrib/double-conversion ${ClickHouse_SOURCE_DIR}/contrib/dragonbox/include
|
|
${ClickHouse_SOURCE_DIR}/contrib/fmtlib/include
|
|
${ClickHouse_SOURCE_DIR}/contrib/cityhash102/include
|
|
${RE2_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/contrib/re2-cmake
|
|
)
|
|
|
|
target_compile_definitions(graphite-rollup-bench PRIVATE RULES_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
|