君梦如烟Brian 2023-02-14 15:14 采纳率: 75%
浏览 27
已结题

如何用CMake编译libpomelo2?

如何用CMake编译libpomelo2, 或者用gyp编译之后怎么将libpomelo2整合到CMake项目中。

NetEase/libpomelo2

  • 写回答

3条回答 默认 最新

  • 君梦如烟Brian 2023-02-15 14:02
    关注

    下面这个是我个人参考各位答主的回答情况,可以通过libpomelo的测试编译。

    cmake_minimum_required(VERSION 3.10)
    
    project(demo)
    
    # set(CMAKE_C_STANDARD 99)
    
    # libpomelo2
    set(POMELO_LOCATION <path>/libpomelo2) # FIXME: change the directory of libpomelo2
    
    # libpomelo2 include path
    set(POMELO_INCLUDE 
        ${POMELO_LOCATION}/include
        ${POMELO_LOCATION}/src
    )
    
    #  libpomelo2 source path
    aux_source_directory(
        ${POMELO_LOCATION}/src/tr/dummy
        POMELO_SOURCE_FILES
    )
    aux_source_directory(
        ${POMELO_LOCATION}/src/tr/uv
        POMELO_SOURCE_FILES
    )
    aux_source_directory(
        ${POMELO_LOCATION}/src
        POMELO_SOURCE_FILES
    )
    
    # set(
    #     POMELO_SOURCE_FILES
    #     ${POMELO_LOCATION}/src/pc_pomelo.c
    #     ${POMELO_LOCATION}/src/pc_lib.c
    #     ${POMELO_LOCATION}/src/pc_trans.c
    #     ${POMELO_LOCATION}/src/pc_trans_repo.c
    #     ${POMELO_LOCATION}/src/pc_JSON.c
    #     ${POMELO_LOCATION}/src/tr/dummy/tr_dummy.c
    # )
    
    add_library(
        pomelo2 STATIC ${POMELO_SOURCE_FILES}
    )
    
    target_include_directories(
        pomelo2 PRIVATE ${POMELO_INCLUDE}
    )
    
    target_link_libraries(
        pomelo2
        uv
        ssl
        crypto
        pthread
    )
    
    
    # prject for test
    include_directories(
        ${POMELO_LOCATION}/test
    )
    
    add_executable(
        ${CMAKE_PROJECT_NAME}
        main.cpp
    )
    
    target_include_directories( ${CMAKE_PROJECT_NAME} PRIVATE
        ${POMELO_INCLUDE}
    )
    
    target_link_libraries( ${CMAKE_PROJECT_NAME} PRIVATE
        pomelo2
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 量化研究所 2023-02-14 17:03
    关注

    编译libpomelo2需要使用gyp工具生成Makefile,然后使用make命令编译生成静态库或动态库。

    以下是使用CMake编译libpomelo2的步骤:

    安装依赖
    

    安装libuv、openssl库,例如在Ubuntu上可以使用以下命令安装:

    sudo apt-get install libssl-dev libuv1-dev
    
    下载源代码
    

    从GitHub上下载libpomelo2的源代码,例如:

    git clone https://github.com/NetEase/libpomelo2.git
    
    cmake_minimum_required(VERSION 3.5)
    
    project(libpomelo2)
    
    set(CMAKE_C_STANDARD 99)
    
    set(SOURCE_FILES
        src/pomelo.c
        src/pomelo_private.h
        src/pomelo_internal.h
        src/pomelo_protocol.c
        src/pomelo_transport.c
        src/pomelo_reconnect.c
        src/pomelo_async.c
        src/pomelo_storage.c
        src/pomelo_sys.c
        src/pomelo_pkg.c
        src/pomelo_ws.c
        )
    
    add_library(pomelo STATIC ${SOURCE_FILES})
    
    target_include_directories(pomelo PRIVATE include)
    target_link_libraries(pomelo uv ssl crypto)
    
    编译生成静态库
    

    在源代码目录下创建build目录,进入build目录,执行以下命令编译生成静态库:

    cmake ..
    make
    
    将生成的静态库添加到CMake项目中
    

    将生成的静态库文件(libpomelo.a)和头文件(pomelo.h)拷贝到CMake项目的相应目录下,然后在CMakeLists.txt文件中添加以下内容:

    add_library(pomelo STATIC IMPORTED)
    set_property(TARGET pomelo PROPERTY IMPORTED_LOCATION /path/to/libpomelo.a)
    target_include_directories(your_project PRIVATE /path/to/pomelo/include)
    target_link_libraries(your_project PRIVATE pomelo uv ssl crypto)
    

    其中,/path/to/libpomelo.a和/path/to/pomelo/include需要替换为实际的路径。

    评论 编辑记录
  • qq_40195003 2023-02-14 15:54
    关注

    该回答引用ChatGPT
    要使用CMake编译libpomelo2,您可以按照以下步骤进行操作:

    安装CMake和构建工具,例如Make或Ninja。
    在libpomelo2源代码目录中创建一个新目录来保存构建文件(例如build目录)。
    在该目录中运行命令 cmake /path/to/libpomelo2/source,其中/path/to/libpomelo2/source应替换为libpomelo2源代码的实际路径。
    运行命令make或ninja以编译libpomelo2库。
    如果您使用gyp编译了libpomelo2,并且想将其整合到CMake项目中,您可以按照以下步骤进行操作:

    在CMake项目的CMakeLists.txt文件中,使用add_subdirectory()命令添加libpomelo2的构建目录。
    使用target_link_libraries()命令将您的CMake项目与libpomelo2库链接起来。
    例如,以下是将libpomelo2添加到CMake项目的示例CMakeLists.txt文件:

    cmake_minimum_required(VERSION 3.10)

    project(my_project)

    Add libpomelo2 subdirectory

    add_subdirectory(/path/to/libpomelo2/build)

    Add your project executable

    add_executable(my_executable main.cpp)

    Link with libpomelo2

    target_link_libraries(my_executable pomelo2)

    其中,/path/to/libpomelo2/build应替换为libpomelo2的实际构建目录。

    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 spyder运行重复
  • ¥15 有偿做一个PUBG识别枪械配合罗技宏的
  • ¥15 我考考你,这代码是对的还是错的?
  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 paddle训练自己的数据loss降不下去