文章目录
在编译之前,需要在Cygwin64 Terminal上执行 mkreleasehdr.sh脚本,由于该脚本格式是win格式,所以需要执行dos2unix命令转换,转换完之后再执行。
##转换格式
dos2unix mkreleasehdr.sh
##执行mkreleasehdr.sh
./mkreleasehdr.sh
怀着信心满满的心情,配置好了之后开始编译,编译不过,说啥版本问题,于是考虑用VS编译,错误还多写,算了我还是用Cyg吧.
刚开始配置的时,遇到CMakeLists问题,由于是Clion自己生成的,于是编译不过,但是直接Makefile是可以编译的,于是考虑曲线救国,准备直接使用MakeFile编译调试,结果试了一下午,还是不行,
参考官网:https://blog.jetbrains.com/zh-hans/2019/05/14/clion/
https://blog.jetbrains.com/clion/2018/08/working-with-makefiles-in-clion-using-compilation-db/
于是还是回到CmakeLists上,找到了一份6.0的配置,但是一堆错误.
首先遇到libevent问题,于是下载源码,准备编译
结果遇到openssl问题.于是下载openssl源码进行编译,结果需要下载Perl.下载了Perl还要下Python,还要下NASM,然后…我整个人都崩溃了
$ apt-cyg install perl-ExtUtils-MakeMaker
.然后自己尝试写CMakeLists.txt,写了4个版本的,终于6配置好了
配了一天半,终于配置好了.
甚至不需要微调,最新版本也是可以用的.厉害了有没有,好了吃饭去了.
配置如下:
redis\CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(redis VERSION 4.0)
set(CMAKE_BUILD_TYPE "Debug")
get_filename_component(REDIS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)
add_subdirectory(deps)
add_subdirectory(src/modules)
set(SRC_SERVER_TMP
src/acl.c
src/adlist.c
src/ae.c
# src/ae_kqueue.c
src/anet.c
src/aof.c
src/bio.c
src/bitops.c
src/blocked.c
src/childinfo.c
src/cluster.c
src/config.c
src/connection.c
src/crc16.c
src/crc64.c
src/db.c
src/debug.c
src/defrag.c
src/dict.c
src/endianconv.c
src/evict.c
src/expire.c
src/geo.c
src/geohash.c
src/geohash_helper.c
src/gopher.c
src/hyperloglog.c
src/intset.c
src/latency.c
src/lazyfree.c
src/listpack.c
src/localtime.c
src/lolwut.c
src/lolwut5.c
src/lolwut6.c
src/lzf_c.c
src/lzf_d.c
src/memtest.c
src/module.c
src/multi.c
src/networking.c
src/notify.c
src/object.c
src/pqsort.c
src/pubsub.c
src/quicklist.c
src/rand.c
src/rax.c
src/rdb.c
src/redis-check-aof.c
src/redis-check-rdb.c
src/release.c
src/replication.c
src/rio.c
src/scripting.c
src/sds.c
src/sentinel.c
src/setproctitle.c
src/sha1.c
src/sha256.c
src/siphash.c
src/slowlog.c
src/sort.c
src/sparkline.c
src/syncio.c
src/t_hash.c
src/t_list.c
src/t_set.c
src/t_stream.c
src/t_string.c
src/t_zset.c
src/tls.c
src/tracking.c
src/util.c
src/ziplist.c
src/zipmap.c
src/zmalloc.c
src/timeout.c
src/crcspeed.c
)
set(SRC_SERVER src/server.c ${SRC_SERVER_TMP})
set(SRC_CLI
src/anet.c
src/sds.c
src/adlist.c
src/redis-cli.c
src/zmalloc.c
src/release.c
src/anet.c
src/ae.c
src/crc64.c
src/crcspeed.c
src/dict.c
src/crc16.c
src/siphash.c
)
set(EXECUTABLE_OUTPUT_PATH src)
link_directories(deps/linenoise/ deps/lua/src deps/hiredis)
add_executable(redis-server ${SRC_SERVER})
target_include_directories(redis-server
PRIVATE ${REDIS_ROOT}/deps/linenoise
PRIVATE ${REDIS_ROOT}/deps/hiredis
PRIVATE ${REDIS_ROOT}/deps/lua/src)
target_link_libraries(redis-server
PRIVATE pthread
PRIVATE m
PRIVATE lua
PRIVATE linenoise
PRIVATE hiredis)
add_executable(redis-cli ${SRC_CLI})
target_include_directories(redis-cli
PRIVATE ${REDIS_ROOT}/deps/linenoise
PRIVATE ${REDIS_ROOT}/deps/hiredis
PRIVATE ${REDIS_ROOT}/deps/lua/src)
target_link_libraries(redis-cli
PRIVATE pthread
PRIVATE m
PRIVATE linenoise
PRIVATE hiredis
)
参考地址
https://blog.csdn.net/smart_an/article/details/107034253
https://blog.csdn.net/u013656184/article/details/88812572
https://www.sibida.net/article/23982/
https://sunznx.com/redis/redis-source-debug-with-clion.html 4
https://blog.csdn.net/smart_an/article/details/107034253
https://www.bilibili.com/video/av286334160/