【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
报错提示
错误如下图所示:
解决方案
-
缺少相应的库文件,即去github上找到相应的库文件,下载并编译即可。
git clone https://github.com/google/snappy.git
-
查阅官方文档,看有无官方给出的编译过程,通常可以
git submodule
一下,防止后续出错
git submodule update –init --recursive
恰巧,此处根据官方文档,需要安装snappy中的submodule
-
切换到snappy目录下,并构建build模块,如下图
cd snappy mkdir build cd build
-
使用 CMake 构建并安装
snappy
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local # 将 snappy 安装到 /usr/local 目录下 make -j sudo make install
-
再次使用cmake构建原项目,发现snappy库已包含进来
libdeflate
报错提示
解决方案
使用以下命令安装libdeflate
即可:
sudo apt update
sudo apt install libdeflate-dev
RapidJson
报错提示
解决方案
-
更新软件包列表:
在终端中运行以下命令,以确保使用最新的软件包列表:
sudo apt update
-
安装 RapidJSON:
使用以下命令安装 RapidJSON:
sudo apt install rapidjson-dev
这将安装 RapidJSON 并将其头文件和库文件放置在系统默认的位置。
Thrift
报错提示
解决方案
安装Thrift
库即可:sudo apt install libthrift-dev
xxHash
报错提示
解决方案
安装xxHash
库即可:sudo apt install libxxhash-dev
ANTLR3
报错提示
解决方案
-
安装 antlr3, 以及 libantlr3c-dev;尝试重新构建程序
sudo apt-get install antlr3 libantlr3c-dev
-
查看 antlr3 的安装地址,命令
dpkg-query -L libabtlr3c-dev
-
将上图中的
antlr3.h
的地址放进CMakeLists.txt中,即‘/usr/include’在`find package(ANTLR3 REQUIRED)`前添加 set(ANTLR3_INCLUDE_DIR "/usr/include") include_directories(${ANTLR3_INCLUDE_DIR})
CARGO
报错提示
解决方案
-
确保 Rust 和 Cargo 安装正确:
确保 Rust 和 Cargo 已正确安装在你的系统上。
安装Rust查看下一条
你可以通过按照官方 Rust 网站上的说明安装 Rust:Install Rust -
验证
cargo
是否在系统的 PATH 中:
确认包含cargo
可执行文件的目录是否包含在系统的 PATH 环境变量中。你可以通过在终端中运行以下命令来检查:cargo --version
如果系统无法识别
cargo
,可能需要调整你的 PATH 或重新安装 Rust。 -
在 CMake 中指定 Cargo 的路径:
在你的CMakeLists.txt
文件中,你可以使用CARGO_EXECUTABLE
变量明确指定cargo
可执行文件的路径。例如:find_program(CARGO_EXECUTABLE cargo)
这假设
cargo
已经在系统的 PATH 中。如果没有,你可以提供完整的路径。 -
检查 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
-
打开终端。
-
在终端中运行以下命令,该命令会下载并运行 Rust 安装脚本:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
执行脚本后,你将看到一系列提示。按
1
(默认选项)继续安装。
-
安装完成后,终端会显示一些信息,其中包括添加
cargo
的路径到你的PATH
。按照提示操作,通常是执行:source $HOME/.cargo/env
-
验证 Rust 是否安装成功,运行以下命令:
rustc --version
-
记得重启一下,使得上面配置的环境变量生效!
CXXBRIDGE
报错提示
解决方案
- 尝试安装cxxbridge,使用如下命令
cargo install cxxbridge
出现报错,不能找到cxxbridge - 查看 crates.io 上的
cxxbridge
信息:
访问 crates.io 页面,确认cxxbridge
crate 的存在以及可用的版本。
发现cxxbridge
已不再使用 - 尝试在Github上搜索问题,找到问题解决方案,链接
终端输入cargo install cxxbridge-cmd
,运行完成后发现cxxbridge-cmd
中集成了cxxbridge
,顺利解决该问题
其他
如果仍存在上述问题,建议先进行以下操作,再重复上述操作
-
更新 Cargo 版本:
确保你使用的是较新版本的 Cargo。在终端中运行以下命令更新 Cargo:cargo install cargo-update cargo install-update -a
-
检查网络连接:
确保你的网络连接正常,能够访问 crates.io。有时网络问题可能导致 Cargo 无法正确下载 crate。 -
清理 Cargo 缓存:
有时 Cargo 缓存可能会导致问题。尝试清理 Cargo 缓存并重新构建项目,注:需要在包含cargo.toml目录下(即构建Rust项目的目录下)运行:cargo clean cargo build
jsoncpp
报错提示
解决方案
-
更新包列表:
sudo apt update
-
安装 jsoncpp:
sudo apt install libjsoncpp-dev
clang
报错提示
解决方案
安装clang库文件即可sudo apt-get install clang
WASM2WAT
报错提示
解决方案
-
安装 WABT:
确保在你的系统上安装了 WABT。你可以从官方 GitHub 仓库下载:WebAssembly/wabt。
按照 README 或构建文档中的说明编译并安装 WABT。安装完成后,请确保wasm2wat
可执行文件位于系统的 PATH 中。
$ 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
-
检查 WABT 安装:
在安装 WABT 后,通过在终端中运行以下命令来验证wasm2wat
是否可用:wasm2wat --version
如果此命令无法运行,说明
wasm2wat
不在你的 PATH 中,或者安装可能不成功。
rapidxml
报错提示
解决方案
安装librapidxml-dev即可,sudo apt-get install librapidxml-dev
其他
以下是ChatGPT回答,但并未解决我的问题,在此附上:
这个错误表明 CMake 在尝试查找 rapidxml
时无法找到相应的头文件路径(rapidxml_INCLUDE_DIR
)。要解决这个问题,你可以采取以下步骤:
-
安装
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
-
指定
rapidxml
路径:
在你的 CMakeLists.txt 文件中,添加一个包含rapidxml
头文件的路径。你可以使用include_directories
命令将包含目录添加到项目中。以下是一个示例:# 设置 rapidxml 头文件路径 set(rapidxml_INCLUDE_DIR "/path/to/rapidxml") # 添加 rapidxml 头文件路径到项目中 include_directories(${rapidxml_INCLUDE_DIR})
请确保将
/path/to/rapidxml
替换为实际的rapidxml
头文件所在的路径。 -
使用
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
。 -
检查安装路径:
确保rapidxml
已经成功安装,并且头文件位于正确的位置。你可能需要检查/path/to/rapidxml
目录,确保其中包含rapidxml.hpp
文件。通过采取这些步骤,你应该能够解决关于找不到
rapidxml
头文件路径的 CMake 错误。确保适应你的具体项目和文件路径。