gpt4 book ai didi

c++ - 使用 vcpkg、cmake 的 cpprestsdk - 找不到包含文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:05 39 4
gpt4 key购买 nike

我正在将一个 Windows 项目移植到使用 cpprestsdk 的 CentOS Linux。我在 Windows 上使用 vcpkg,我想我会使用 vcpkg(和 cmake)引入和构建包,并将库和头文件“公开”到我的项目中。该序列无法尝试获取我的来源“已知”的包头文件。这就是我所做的。

$ vcpkg install boost cpprestsdk
$ vcpkg integrate install
Applied user-wide integration for this vcpkg root.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake"

$ cd <source>
$ vi CMakeLists.txt
cmake_minimum_required(VERSION 2.8.9)
project(Domain)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -I../ ")
file(GLOB SOURCES "*.cpp")

#Generate the shared library from the sources
add_library(Domain SHARED ${SOURCES})

install(TARGETS Domain DESTINATION ../lib)

$ cmake -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Unix Makefiles" .
$ make
[ 7%] Building CXX object CMakeFiles/Domain.dir/BaseDataFactory.cpp.o
In file included from /src/Domain/stdafx.h:4:0,
from /src/Domain/BaseDataFactory.cpp:1:
../Common/Common.h:75:26: fatal error: cpprest/json.h: No such file or directory
#include <cpprest/json.h>

通过将 vcpkg 工具链文件参数添加到 cmake,我认为它应该负责公开所有包路径(lib/header)并将它们写入输出 Makefile?

我尝试添加

find_package(cpprestsdk REQUIRED)

然后我得到了一堆新的错误:

CMake Error at CMakeLists.txt:7 (find_package):
Could not find a package configuration file provided by "cpprestsdk" with
any of the following names:

cpprestsdkConfig.cmake
cpprestsdk-config.cmake
cpprestConfig.cmake
cpprest-config.cmake

cpprestsdk-config.cmake 确实存在于 vcpkg 根目录下,我绝对可以在 vcpkg 根目录下看到该包的头文件,但为什么 cmake 生成的 Makefile 没有构建所需的一切? vcpkg 下的每个包是否都必须以某种方式手动包含在 CMakeLists.txt 文件中?

最佳答案

我发现了问题。 Cpprestsdk 不注册/公开任何 cmake find_package() 配置模块。如果这样做,这将不是问题 - 生成的工具链文件将设置 cmake 所需的一切,以便生成要包含在 MakeFile 中的路径。

我将以下行添加到 CMakeList.txt 文件,然后 cmake 能够找到配置文件:

设置(cpprestsdk_DIR "/vcpkg/installed/x64-linux/share/cpprestsdk")

这真的非常糟糕,恕我直言,必须硬编码路径才能找到 cpprestsdk。我仍然有头文件路径问题,所以实际上还有更多错误/丢失。收到 vcpkg/cmake 团队的消息后,我会更新这篇文章。

关于c++ - 使用 vcpkg、cmake 的 cpprestsdk - 找不到包含文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896271/

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