gpt4 book ai didi

c++ - 使用 Boost 作为 CMake 的 git 子模块

转载 作者:行者123 更新时间:2023-12-05 04:44:22 30 4
gpt4 key购买 nike

我想为我的 C++ 项目使用 Boost 库(更准确地说,我对 Boost 图形库感兴趣)。我希望它在我的 git 存储库中,作为 git 子模块,就像它对所有其他依赖项所做的那样。

例如,如果我想以 fmt 依赖作为 git 子模块启动一个项目,我会这样做:

mkdir my_project
cd my_project
git init .

然后,我想在 8.0.0 标签上添加 fmt 作为子模块:

mkdir deps
git submodule add https://github.com/fmtlib/fmt.git deps/fmt
cd deps/fmt
git checkout 8.0.0

然后,我回到项目的根文件夹:

cd ../..

然后我创建了以下文件:

  • main.cpp
#include <fmt/format.h>

int main() {
fmt::print("Hello, World!\n");
return 0;
}
  • CMakeLists.txt
cmake_minimum_required(VERSION 3.17)
project(test_boost)

add_subdirectory(deps/fmt)

add_executable(test_boost main.cpp)
target_link_libraries(test_boost fmt::fmt)

然后,我们可以构建:

mkdir build
cd build
cmake ..
make

二进制文件工作正常,预计会打印 Hello, World!,这很棒。

现在如果我想添加 boost,版本 1.77.0:

git submodule add https://github.com/boostorg/boost deps/boost
git submodule update --init --recursive # To get Boost's own submodules.
cd deps/boost
git checkout boost-1.77.0
cd ../..

现在我想使用这个 boost 文件夹作为我项目的依赖项,这就是它变得棘手的地方。我读了here从版本 1.77 开始,我应该能够使用 find_package() 来执行此操作,因为它取代了 FindBoost 东西:

find_package(Boost 1.77.0 REQUIRED CONFIG PATHS deps/boost/tools/boost_install)

但是我得到以下错误:

-- Module support is disabled.
-- Version: 8.0.1
-- Build type: Debug
-- CXX_STANDARD: 11
-- Required features: cxx_variadic_templates
CMake Error at CMakeLists.txt:6 (find_package):
Could not find a configuration file for package "Boost" that is compatible
with requested version "1.77.0".

The following configuration files were considered but not accepted:

/home/me/tests/boost_so/my_project/deps/boost/tools/boost_install/BoostConfig.cmake, version: unknown



-- Configuring incomplete, errors occurred!
See also "/home/me/tests/boost_so/my_project/cmake-build-debug/CMakeFiles/CMakeOutput.log".
See also "/home/me/tests/boost_so/my_project/cmake-build-debug/CMakeFiles/CMakeError.log".

我也尝试了其他方法,但遇到了以下错误之一:

  • 同上。
  • CMake 使用我从 /usr/local 安装的 Boost,这不是我想要的。

我正在使用 CMake 3.17.2。可以这样做还是我遗漏了什么?

最佳答案

那个link还列出了您需要使用的 Cmake 版本。为了能够使用 FindBoost,您需要 cmake 版本 3.21.3 或更高版本,但您使用的是 3.17.2

关于c++ - 使用 Boost 作为 CMake 的 git 子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69395818/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com