【scyllaDB】ubuntu + vscode + cmake构建项目步骤【合集】

问题概述

在ubuntu22.04中,从github下载scyllaDB源文件,使用vscode,用cmake进行项目构建时,缺少库文件,出现 find a package configure file provided by "XXX", but Cmake did not find one错误;本文详细记录下配置scylla缺少库文件的解决方案,难免有些许遗漏……

GCC版本 GCC 11.4.0 x86_64-linux-gnu
cmake版本 cmake version 3.28.0-rc6

Snappy

参考:在ubuntu安装c++版本的absl库

报错提示

错误如下图所示:

解决方案

  1. 缺少相应的库文件,即去github上找到相应的库文件,下载并编译即可。

    git clone https://github.com/google/snappy.git
    

  2. 查阅官方文档,看有无官方给出的编译过程,通常可以 git submodule 一下,防止后续出错
    git submodule update –init --recursive

    恰巧,此处根据官方文档,需要安装snappy中的submodule

  3. 切换到snappy目录下,并构建build模块,如下图

    cd snappy
    mkdir build
    cd build
    

  4. 使用 CMake 构建并安装 snappy

    cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local    # 将 snappy 安装到 /usr/local 目录下
    make -j
    sudo make install
    
  5. 再次使用cmake构建原项目,发现snappy库已包含进来


libdeflate

报错提示

解决方案

使用以下命令安装libdeflate即可:

sudo apt update
sudo apt install libdeflate-dev

RapidJson

报错提示

解决方案

  1. 更新软件包列表:

    在终端中运行以下命令,以确保使用最新的软件包列表:

    sudo apt update
    
  2. 安装 RapidJSON:

    使用以下命令安装 RapidJSON:

    sudo apt install rapidjson-dev
    

    这将安装 RapidJSON 并将其头文件和库文件放置在系统默认的位置。


Thrift

报错提示

解决方案

安装Thrift库即可:sudo apt install libthrift-dev


xxHash

报错提示

解决方案

安装xxHash库即可:sudo apt install libxxhash-dev


ANTLR3

报错提示

image

解决方案

  1. 安装 antlr3, 以及 libantlr3c-dev;尝试重新构建程序
    sudo apt-get install antlr3 libantlr3c-dev

  2. 查看 antlr3 的安装地址,命令 dpkg-query -L libabtlr3c-dev
    image

  3. 将上图中的 antlr3.h 的地址放进CMakeLists.txt中,即‘/usr/include’

    在`find package(ANTLR3 REQUIRED)`前添加
    set(ANTLR3_INCLUDE_DIR "/usr/include")
    include_directories(${ANTLR3_INCLUDE_DIR})
    

    image


CARGO

报错提示

image

解决方案

  1. 确保 Rust 和 Cargo 安装正确:
    确保 Rust 和 Cargo 已正确安装在你的系统上。
    安装Rust查看下一条
    你可以通过按照官方 Rust 网站上的说明安装 Rust:Install Rust

  2. 验证 cargo 是否在系统的 PATH 中:
    确认包含 cargo 可执行文件的目录是否包含在系统的 PATH 环境变量中。你可以通过在终端中运行以下命令来检查:

    cargo --version
    

    如果系统无法识别 cargo,可能需要调整你的 PATH 或重新安装 Rust。

  3. 在 CMake 中指定 Cargo 的路径:
    在你的 CMakeLists.txt 文件中,你可以使用 CARGO_EXECUTABLE 变量明确指定 cargo 可执行文件的路径。例如:

    find_program(CARGO_EXECUTABLE cargo)
    

    这假设 cargo 已经在系统的 PATH 中。如果没有,你可以提供完整的路径。

  4. 检查 CMake 配置:
    确保你的 CMake 配置是正确的。可能在 rust/CMakeLists.txt 文件中存在问题。检查该文件中的拼写错误或错误,特别是在 find_program 命令中。
    以下是在 CMakeLists.txt 中使用 CARGO_EXECUTABLE 的示例:

     # 查找 Cargo
     find_program(CARGO_EXECUTABLE cargo)
    
     if(NOT CARGO_EXECUTABLE)
     	message(FATAL_ERROR "无法找到 cargo。")
     endif()
    
     # 其余的 CMake 配置...
    

    确保在你的系统上正确安装和配置了 Rust 和 Cargo,并且 cargo 可执行文件位于你的 PATH 中。在做出这些调整后,尝试重新运行 CMake。如果问题仍然存在,请检查你的 CMakeLists.txt 文件和 Rust 项目结构,查找可能的错误。


安装Rust

  1. 打开终端。

  2. 在终端中运行以下命令,该命令会下载并运行 Rust 安装脚本:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  3. 执行脚本后,你将看到一系列提示。按 1(默认选项)继续安装。
    image

  4. 安装完成后,终端会显示一些信息,其中包括添加 cargo 的路径到你的 PATH。按照提示操作,通常是执行:

    source $HOME/.cargo/env
    
  5. 验证 Rust 是否安装成功,运行以下命令:

    rustc --version
    
  6. 记得重启一下,使得上面配置的环境变量生效!


CXXBRIDGE

报错提示

image

解决方案

  1. 尝试安装cxxbridge,使用如下命令 cargo install cxxbridge
    image
    出现报错,不能找到cxxbridge
  2. 查看 crates.io 上的 cxxbridge 信息:
    访问 crates.io 页面,确认 cxxbridge crate 的存在以及可用的版本。
    image
    发现cxxbridge已不再使用
  3. 尝试在Github上搜索问题,找到问题解决方案,链接
    image
    终端输入 cargo install cxxbridge-cmd,运行完成后发现 cxxbridge-cmd 中集成了cxxbridge,顺利解决该问题
    image

其他

如果仍存在上述问题,建议先进行以下操作,再重复上述操作

  1. 更新 Cargo 版本:
    确保你使用的是较新版本的 Cargo。在终端中运行以下命令更新 Cargo:

    cargo install cargo-update
    cargo install-update -a
    
  2. 检查网络连接:
    确保你的网络连接正常,能够访问 crates.io。有时网络问题可能导致 Cargo 无法正确下载 crate。

  3. 清理 Cargo 缓存:
    有时 Cargo 缓存可能会导致问题。尝试清理 Cargo 缓存并重新构建项目,注:需要在包含cargo.toml目录下(即构建Rust项目的目录下)运行:

    cargo clean
    cargo build
    

    image
    image


jsoncpp

报错提示

解决方案

  1. 更新包列表:

    sudo apt update
    
  2. 安装 jsoncpp:

    sudo apt install libjsoncpp-dev
    

clang

报错提示

image

解决方案

安装clang库文件即可sudo apt-get install clang


WASM2WAT

报错提示

image

解决方案

  1. 安装 WABT:
    确保在你的系统上安装了 WABT。你可以从官方 GitHub 仓库下载:WebAssembly/wabt
    按照 README 或构建文档中的说明编译并安装 WABT。安装完成后,请确保 wasm2wat 可执行文件位于系统的 PATH 中。
    image

     $ git clone --recursive https://github.com/WebAssembly/wabt
     $ cd wabt
     $ git submodule update --init
    
    $ mkdir build
    $ cd build
    $ cmake ..
    $ cmake --build .
    
    make -j
    sudo make install
    
  2. 检查 WABT 安装:
    在安装 WABT 后,通过在终端中运行以下命令来验证 wasm2wat 是否可用:

    wasm2wat --version
    

    如果此命令无法运行,说明 wasm2wat 不在你的 PATH 中,或者安装可能不成功。


rapidxml

报错提示

image

解决方案

安装librapidxml-dev即可,sudo apt-get install librapidxml-dev

其他

以下是ChatGPT回答,但并未解决我的问题,在此附上:

这个错误表明 CMake 在尝试查找 rapidxml 时无法找到相应的头文件路径(rapidxml_INCLUDE_DIR)。要解决这个问题,你可以采取以下步骤:

  1. 安装 rapidxml 库:
    确保已经安装了 rapidxml 库。你可以从 rapidxml GitHub 页面 下载源代码,然后将其构建并安装到系统中。

     git clone https://github.com/dwd/rapidxml.git
    
     cd rapidxml
     cp rapidxml.hpp ./test
     g++ --std=c++11 test/simple.cpp
    
  2. 指定 rapidxml 路径:
    在你的 CMakeLists.txt 文件中,添加一个包含 rapidxml 头文件的路径。你可以使用 include_directories 命令将包含目录添加到项目中。以下是一个示例:

    # 设置 rapidxml 头文件路径
    set(rapidxml_INCLUDE_DIR "/path/to/rapidxml")
    
    # 添加 rapidxml 头文件路径到项目中
    include_directories(${rapidxml_INCLUDE_DIR})
    

    请确保将 /path/to/rapidxml 替换为实际的 rapidxml 头文件所在的路径。

    image

  3. 使用 find_package 命令:
    在你的 CMakeLists.txt 文件中,使用 find_package 命令来查找 rapidxml。以下是一个示例:

    find_package(rapidxml REQUIRED)
    
    if(NOT rapidxml_FOUND)
        message(FATAL_ERROR "Could NOT find rapidxml.")
    endif()
    
    include_directories(${rapidxml_INCLUDE_DIR})
    

    find_package 命令应该能够找到 rapidxml 并设置相应的变量,包括 rapidxml_INCLUDE_DIR

  4. 检查安装路径:
    确保 rapidxml 已经成功安装,并且头文件位于正确的位置。你可能需要检查 /path/to/rapidxml 目录,确保其中包含 rapidxml.hpp 文件。

    通过采取这些步骤,你应该能够解决关于找不到 rapidxml 头文件路径的 CMake 错误。确保适应你的具体项目和文件路径。


结果:成功构建

image

posted @ 2023-12-02 15:50  是你亦然  阅读(132)  评论(0编辑  收藏  举报