Redis 源码编译
发布于
Top
redis

clion 、redis 4.0.6

clion import project from sources

只导 src下的,忽略 ae_epoll ae_evport ae_kqueue ae_select

cmake_minimum_required(VERSION 3.7)

project(redis VERSION 3.2)

get_filename_component(REDIS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)

add_executable(redis
        src/adlist.c
        src/adlist.h
        src/ae.c
        src/ae.h
        src/anet.c
        src/anet.h
        src/aof.c
        src/asciilogo.h
        src/atomicvar.h
        src/bio.c
        src/bio.h
        src/bitops.c
        src/blocked.c
        src/childinfo.c
        src/cluster.c
        src/cluster.h
        src/config.c
        src/config.h
        src/crc16.c
        src/crc64.c
        src/crc64.h
        src/db.c
        src/debug.c
        src/debugmacro.h
        src/defrag.c
        src/dict.c
        src/dict.h
        src/endianconv.c
        src/endianconv.h
        src/evict.c
        src/expire.c
        src/fmacros.h
        src/geo.c
        src/geo.h
        src/geohash.c
        src/geohash.h
        src/geohash_helper.c
        src/geohash_helper.h
        src/help.h
        src/hyperloglog.c
        src/intset.c
        src/intset.h
        src/latency.c
        src/latency.h
        src/lazyfree.c
        src/lzf.h
        src/lzf_c.c
        src/lzf_d.c
        src/lzfP.h
        src/memtest.c
        src/module.c
        src/multi.c
        src/networking.c
        src/notify.c
        src/object.c
        src/pqsort.c
        src/pqsort.h
        src/pubsub.c
        src/quicklist.c
        src/quicklist.h
        src/rand.c
        src/rand.h
        src/rax.c
        src/rax.h
        src/rax_malloc.h
        src/rdb.c
        src/rdb.h
        src/redis-check-aof.c
        src/redis-check-rdb.c
        src/redis-trib.rb
        src/redisassert.h
        src/redismodule.h
        src/release.c
        src/release.h
        src/replication.c
        src/rio.c
        src/rio.h
        src/scripting.c
        src/sds.c
        src/sds.h
        src/sdsalloc.h
        src/sentinel.c
        src/server.c
        src/server.h
        src/setproctitle.c
        src/sha1.c
        src/sha1.h
        src/siphash.c
        src/slowlog.c
        src/slowlog.h
        src/solarisfixes.h
        src/sort.c
        src/sparkline.c
        src/sparkline.h
        src/syncio.c
        src/t_hash.c
        src/t_list.c
        src/t_set.c
        src/t_string.c
        src/t_zset.c
        src/testhelp.h
        src/util.c
        src/util.h
        src/valgrind.sup
        src/version.h
        src/ziplist.c
        src/ziplist.h
        src/zipmap.c
        src/zipmap.h
        src/zmalloc.c
        src/zmalloc.h)

set_property(TARGET redis PROPERTY C_STANDARD 99)

target_include_directories(redis
        PRIVATE ${REDIS_ROOT}/deps/hiredis
        PRIVATE ${REDIS_ROOT}/deps/linenoise
        PRIVATE ${REDIS_ROOT}/deps/lua/src
        )
add_library(luaa STATIC IMPORTED)
set_property(TARGET luaa APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
set_target_properties(luaa PROPERTIES IMPORTED_LOCATION_NOCONFIG "${REDIS_ROOT}/deps/lua/src/liblua.a")

target_link_libraries(redis
        PRIVATE m
        PRIVATE luaa
        PRIVATE pthread
        PRIVATE dl
        PRIVATE ${REDIS_ROOT}/deps/linenoise/linenoise.o
        PRIVATE ${REDIS_ROOT}/deps/hiredis/libhiredis.a
        )

cmake –build ./cmake-build-debug –target redis – -j 4 -stdlib=libstdc++

然后 就可以 打开 server.c main() 玩耍了