CMakeList.txt增加2行:
cmake_minimum_required(VERSION 3.3)
add_definitions(-D__STDC_FORMAT_MACROS)
add_definitions(-DUSE_EMBEDDED_COMPILER)
foreach(policy
CMP0023
CMP0048 # CMake 3.0
CMP0074 # CMake 3.12
CMP0077
CMP0079
)
内存调试: -DSANITIZE=address/thread/memory/undefined
编译命令:
v19.18:
cmake .. -DGLIBC_COMPATIBILITY=OFF -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DUSE_JEMALLOC=1 -DENABLE_TESTS=0 -DENABLE_MYSQL=1 -DUNBUNDLED=ON -DUSE_INTERNAL_MYSQL_LIBRARY=1 -DUSE_INTERNAL_JEMALLOC_LIBRARY=1 -DUSE_INTERNAL_LLVM_LIBRARY=1
cmake .. -DUNBUNDLED=ON -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=0 -DENABLE_MYSQL=0 -DUSE_JEMALLOC=0 -DUSE_STATIC_LIBRARIES=0 -DNO_WERROR=1 -DUSE_RDKAFKA=0 -D SANITIZE=address -DENABLE_HDFS=0
v20.5
cmake .. -DGLIBC_COMPATIBILITY=OFF -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DENABLE_TESTS=0 -DENABLE_MYSQL=1 -DUNBUNDLED=ON -DUSE_INTERNAL_MYSQL_LIBRARY=1 -DUSE_INTERNAL_LLVM_LIBRARY=1 -DENABLE_REPLXX=1 -DUSE_INTERNAL_REPLXX=1 -DUSE_INTERNAL_BOOST_LIBRARY=1 -DENABLE_HYPERSCAN=1 -DUSE_INTERNAL_HYPERSCAN_LIBRARY=1
-DUSE_RDKAFKA=0 -DUSE_INTERNAL_RDKAFKA_LIBRARY=1 -DUSE_INTERNAL_ZLIB_LIBRARY=1 -DUSE_INTERNAL_ZLIB_LIBRARY=1 -DUSE_INTERNAL_POCO_LIBRARY=1
v20.8
cmake .. -DGLIBC_COMPATIBILITY=OFF -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DENABLE_TESTS=0 -DENABLE_MYSQL=0 -DUNBUNDLED=ON -DUSE_INTERNAL_MYSQL_LIBRARY=0 -DUSE_INTERNAL_LLVM_LIBRARY=1 -DENABLE_REPLXX=1 -DUSE_INTERNAL_REPLXX=1 -DUSE_INTERNAL_BOOST_LIBRARY=1 -DENABLE_HYPERSCAN=1 -DUSE_INTERNAL_HYPERSCAN_LIBRARY=1 -DENABLE_RDKAFKA=0 -DUSE_INTERNAL_RDKAFKA_LIBRARY=0 -DUSE_INTERNAL_ZLIB_LIBRARY=0 -DUSE_INTERNAL_POCO_LIBRARY=1 -DUSE_INTERNAL_CAPNP_LIBRARY=1 -DUSE_INTERNAL_PROTOBUF_LIBRARY=1 -DUSE_INTERNAL_GRPC_LIBRARY=1 -DENABLE_S3=0 -DUSE_INTERNAL_AWS_S3_LIBRARY=false -DUSE_INTERNAL_SNAPPY_LIBRARY=1 -DUSE_INTERNAL_PARQUET_LIBRARY=1 -DUSE_INTERNAL_RAPIDJSON_LIBRARY=1 -DENABLE_ODBC=0 -DENABLE_AVRO=0 -DUSE_INTERNAL_AVRO_LIBRARY=0 -DUSE_INTERNAL_MSGPACK_LIBRARY=1 -DENABLE_CASSANDRA=0 -DUSE_INTERNAL_ODBC_LIBRARY=0 -DUSE_INTERNAL_GRPC_LIBRARY=1 -DUSE_GRPC=1 -DUSE_INTERNAL_CCTZ_LIBRARY=1 -DUSE_KRB5=0 -DENABLE_AMQPCPP=0 -DUSE_INTERNAL_JEMALLOC_LIBRARY=1 -DUSE_INTERNAL_FARMHASH_LIBRARY=1
修改src/CMakelist.txt,增加:
set(MSGPACK_INCLUDE_DIR ${ClickHouse_SOURCE_DIR}/contrib/msgpack-c/include)
错误:
contrib/arrow-cmake/thrift/config.h:1:1: error: expected unqualified-id before ‘.’ token
原因:windows git未生成软连接。
解决:
cd contrib/arrow-cmake/build/cmake
ln -s ../../../thrift/build/cmake/config.h.in config.h.in -f
下载contrib:
git submodule sync
git submodule update --init --recursive
CH默认把所有的库都编译到一个可执行文件,而link的过程比较慢,在开发环境下面,可以通过修改CMakeList.txt中一下内容,来使用动态链接库
-option (USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" ON)
+option (USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" FALSE)
option (MAKE_STATIC_LIBRARIES "Set to FALSE to make shared libraries" ${USE_STATIC_LIBRARIES})
if (NOT MAKE_STATIC_LIBRARIES)
- option (SPLIT_SHARED_LIBRARIES "DEV ONLY. Keep all internal libs as separate .so for faster linking" OFF)
- option (CLICKHOUSE_SPLIT_BINARY "Make several binaries instead one bundled (clickhouse-server, clickhouse-client, ... )" OFF)
+ option (SPLIT_SHARED_LIBRARIES "DEV ONLY. Keep all internal libs as separate .so for faster linking" ON)
+ option (CLICKHOUSE_SPLIT_BINARY "Make several binaries instead one bundled (clickhouse-server, clickhouse-client, ... )" ON) endif ()