vcpkg-installed-lib和single-download-lib如何在CLion中一起使用

问题描述 投票:0回答:1

案例1. 我通常使用 vcpkg 安装 cxx 库。 我使用 Clion 来构建和运行我的项目。我的CLion版本是2024.1.1

我在 CLion 设置上设置 -DCMAKE_TOOLCHAIN_FILE=/path/to/my/vcpkg/scripts/buildsystems/vcpkg.cmake 。 设置路径为:Settings - Build, Execution, Deployment - CMake - CMake options,如图所示: 在此输入图片描述

案例2 有时我也会下载源码,不用vcpkg编译。 我最近使用boost_1_85_0。 我在特定路径中编译并安装了版本boost。 如果我像情况 1 那样设置 CMAKE_TOOLCHAIN_FILE,CLion 找不到 boost 包。 因此,我删除了 CLion 上的 CMAKE_TOOLCHAIN_FILE 设置。 并在 CMakeLists.txt 中添加 CMAKE_PREFIX_PATH 设置,如下所示:

cmake_minimum_required(VERSION 3.24)
set(PROJECT_NAME vcpkg_and_singlelib)
project(${PROJECT_NAME})

set(CMAKE_CXX_STANDARD 17)

add_executable(${PROJECT_NAME} main.cpp)

set(BOOST_ROOT "Path/to/boost/installed/boost_1_85_0_install_default")
set(CMAKE_PREFIX_PATH        "${BOOST_ROOT}")
find_package(Boost 1.85.0 REQUIRED COMPONENTS system thread date_time log log_setup program_options)
target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE Boost::system Boost::thread Boost::date_time Boost::log Boost::log_setup Boost::program_options)

find_package(RapidJSON CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE rapidjson)

但是 CLion 找不到 vcpkg 安装的软件包,如上面所示的 Rapidjson。

问题: 如何从 vcpkg 和自安装目录中找到软件包?

我在 vcpkg 安装的软件包之前和自安装的软件包之后设置了 CMAKE_TOOLCHAIN_FILE。

cmake_minimum_required(VERSION 3.24)
set(PROJECT_NAME vcpkg_and_singlelib)
project(${PROJECT_NAME})

set(CMAKE_CXX_STANDARD 17)

add_executable(${PROJECT_NAME} main.cpp)

set(BOOST_ROOT "Path/to/boost/installed/boost_1_85_0")
set(CMAKE_PREFIX_PATH        "${BOOST_ROOT}")
find_package(Boost 1.85.0 REQUIRED COMPONENTS system thread date_time log log_setup program_options)
target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE Boost::system Boost::thread Boost::date_time Boost::log Boost::log_setup Boost::program_options)

set(CMAKE_TOOLCHAIN_FILE "/path/to/my/vcpkg/scripts/buildsystems/vcpkg.cmake")

find_package(RapidJSON CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE rapidjson)

但是还是找不到vcpkg安装的包。

c++ cmake boost clion vcpkg
1个回答
0
投票

变量CMAKE_PREFIX_PATH被CMake视为列表,因此它可以容纳多个路径。您的代码会覆盖该变量,因此 vcpkg 添加的任何内容都会丢失。相反,追加新路径:

list(APPEND CMAKE_PREFIX_PATH "${BOOST_ROOT}")
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.