我一直在尝试遵循vcpkg 设置指南,但无法解决最后一步中出现的构建错误:
fatal error C1083: Cannot open include file: 'sqlite3.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的vcpkg设置过程如下:
> git clone https://github.com/Microsoft/vcpkg.git
> cd vcpkg\
> .\bootstrap-vcpkg.bat
> vcpkg install sqlite3:x64-windows
> vcpkg integrate install
我确认 sqlite 安装:
> vcpkg list
sqlite3:x64-windows 3.29.0-1 SQLite is a software library that implements a s...
Run Code Online (Sandbox Code Playgroud)
我在测试存储库中创建以下文件:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(test)
find_package(Sqlite3 REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main sqlite3)
Run Code Online (Sandbox Code Playgroud)
主要.cpp:
#include <sqlite3.h>
#include <stdio.h>
int main()
{
printf("%s\n", sqlite3_libversion());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
开始构建:
然后,我通过在构建文件夹中运行以下命令来生成构建文件,并注意它能够找到 …
我正在使用它boost::network::uri::encoded()
来编码我的请求 URL。
但是当我构建项目时,我看到了错误:
error C2039: "value": Is not a member of "boost::proto"
Run Code Online (Sandbox Code Playgroud)
其中有四个,他们的报道来自:
boost\proto\generate.hpp(239,20);
boost\proto\generate.hpp(239,53);
boost\proto\generate.hpp(248,20);
boost\proto\generate.hpp(248,53)
Run Code Online (Sandbox Code Playgroud)
这是我的测试代码:
#include <iostream>
#include <string>
#include "boost/network/uri.hpp"
using std::string;
string EncodeURL(string str)
{
return boost::network::uri::encoded(str);
}
string DecodeURL(string str)
{
return boost::network::uri::decoded(str);
}
int main()
{
EncodeURL("https://test.com/a+a+a.html");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我安装boost
并cpp-netlib
使用了vcpkg。我的IDE是Visual Studio Professional 2019,操作系统是Windows 10 Professional Workstation x64(Ver.2004
)。
我想知道如何避免这些错误或使用其他方法对 UNICODE 兼容的 URL 进行编码。
我正在尝试按照官方说明获取 Vcpkg 用户范围的 bash 集成。这是我采取的步骤:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
为此 vcpkg 根应用了用户范围的集成。
CMake 项目应使用:“-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake”
./vcpkg integrate bash
无法读取/Users/<用户>/.bashrc
touch /Users/<user>/.bashrc
并重复步骤5将 vcpkg 完成条目添加到 /Users/<user>/.bashrc
mv /Users/<user>/.bashrc /Users/<user>/.bash_profile
但是,现在当我运行vcpkg
或./vcpkg
在新终端中时,我得到:
-bash:vcpkg:找不到命令
如果您能帮助我了解问题所在以及如何解决它,我将不胜感激。
我的环境是:
PS我在这里被要求展示的内容.bash_profile
是:
source /path/to/vcpkg/scripts/vcpkg_completion.bash
Run Code Online (Sandbox Code Playgroud) 我已经在 Windows 中使用 vcpkg 安装了 grpc:x64,并且正在尝试编译基本的欢迎服务器程序。但它给了我链接错误。尽管 find_package 命令能够找到 grpc 包,但我怀疑库路径设置不正确。我无法找出这个问题的确切原因。如果 find_package 成功,我是否必须显式提供库路径?
操作系统:Windows 10
工具链:Visual Studio 15
cmake_minimum_required(版本3.1) 项目(测试) find_package(需要 gRPC 配置) find_package(需要 Protobuf ) add_executable( ${PROJECT_NAME} src/main.cpp 原型/hello_world.grpc.pb.cc 原型/hello_world.pb.cc) target_link_libraries( ${PROJECT_NAME} PRIVATE gRPC::grpc++ gRPC::gpr gRPC::grpc gRPC::grpc++ gRPC::grpc_cronet protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite )
我在基本问候服务器程序时收到以下错误
1>------ 构建开始:项目:测试,配置:发布 x64 ------
1>main.obj : 错误 LNK2019: 函数“void __cdecl RunServer(void)”(?运行服务器@@YAXXZ) 1>C:\all_files\junkyard\_grpc\build\Release\test.exe:致命错误 LNK1120:1 个无法解析的外部 2>------ 跳过构建:项目:ALL_BUILD,配置:Release x64 ------ 2>未选择为此解决方案配置构建项目 ========== 构建:0 成功,1 失败,1 最新,1 跳过 ==========
任何识别问题的指示都将不胜感激。谢谢。
我已经boost-variant2
使用 vcpkg 命令安装了库:
vcpkg 安装 boost-variant2:x64-windows
vcpkg安装完成后,提示如下:
The package boost is compatible with built-in CMake targets:
find_package(Boost REQUIRED [COMPONENTS <libs>...])
target_link_libraries(main PRIVATE Boost::boost Boost::<lib1> Boost::<lib2> ...)
Run Code Online (Sandbox Code Playgroud)
所以在我的 CMakeLists.txt 中我添加了以下几行:
find_package(Boost COMPONENTS variant2 REQUIRED)
target_link_libraries(MyTarget PRIVATE Boost::variant2)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,cmake -DCMAKE_TOOLCHAIN_FILE:STRING=/path_to_vcpkg/scripts/buildsystems/vcpkg.cmake
出现以下错误:
-- 配置不完整,出现错误!
找不到 Boost(缺少:variant2)(找到版本“1.78.0”)
我想根据 LibFranka 安装 Matlab 扩展
安装 Visual Studio 后,他们说我应该安装 vcpkg,将其添加到 PATH 并运行
vcpkg 安装 eigen3:x64-windows
但是,错误消息
错误:此 vcpkg 实例需要具有指定基线的清单才能与端口交互。请将“builtin-baseline”添加到清单中,或添加重新定义默认注册表的“vcpkg-configuration.json”。
已产生。我查看了 vcpkg 的文档,但我不知道在哪个 json 文件中放入什么内容。
我尝试添加 vcpkg-configuration.json 但该文件被忽略。我在论坛上读到, vcpkg.json 必须存在,但我不知道要填写什么,否则它会显示“vcpkg.json 中出现意外的 EOF”。
我读到 vcpkgbuiltin-baseline 是指定版本的,但我不知道要放入什么。请帮忙。
我有一个依赖OpenCV和TBB的VS(C++)项目,所以我为每个库创建了属性表并将它们包含在项目中.一切正常,代码编译.
昨天,我已经开始使用vcpkg包管理器了.我通过vcpkg安装了OpenCV和TBB,一切似乎都有效.我创建了一个空项目,包括两者的标题,并测试新编译的库是否有效.在验证之后,我回到了我的主项目并删除了属性表,所以我可以使用vcpkg中的库.自上次成功编译以来,我没有以任何方式更改代码.
但是当我现在尝试编译代码时,我得到了两次这个错误(在main.cpp和子模块中)
tbb\critical_section.h(53):错误C3861:'InitializeCriticalSectionEx':未找到标识符
有谁知道这里发生了什么或为什么会发生这个错误?
我自己发现了这个错误.我正在添加poco-libraries标签,因为它实际上是TBB和Poco之间的冲突.
我安装了最新版本的 cmake,并按照我所做的一些说明将使用 vcpkg 与 grpc 的项目集成。安装 vcpkg 后,我尝试安装软件包,./vcpkg install grpc
结果出现以下错误。这些说明适用于 OSX 和 Ubuntu,但我在使用树莓派时遇到了问题。
我已经尝试了这两个0
选项1
,$VCPKG_FORCE_SYSTEM_BINARIES=1
但两个选项都不起作用。使用./vcpkg
导致 VCPKG_FORCE_SYSTEM_BINARIES 错误的结果:
pi@raspberrypi:~/vcpkg $ ./vcpkg
Environment variable VCPKG_FORCE_SYSTEM_BINARIES must be set on arm and s390x platforms.
pi@raspberrypi:~/vcpkg $ VCPKG_FORCE_SYSTEM_BINARIES=1
pi@raspberrypi:~/vcpkg $ echo $VCPKG_FORCE_SYSTEM_BINARIES
1
pi@raspberrypi:~/vcpkg $ ./vcpkg
Environment variable VCPKG_FORCE_SYSTEM_BINARIES must be set on arm and s390x platforms.
Run Code Online (Sandbox Code Playgroud) 当您通过 vcpkg 安装许多软件包(例如vcpkg install cairo
)时,在此过程结束时,系统会告诉您要使用哪些命令find_package
和target_link_libraries
CMake 命令来链接到已安装的软件包。这很好用;您甚至可以重新执行安装命令以再次查看这些 CMake 命令。
但是,通过 vcpkg 安装的某些软件包没有这些。例如,安装 Pango 后,没有实际使用该库的 CMake 命令列表。我在几个 vcpkg 包目录中找到了目标 CMake 文件find_package
,但 Pango 目录没有该包的 CMake 文件。
由于某种原因,使用 Pango 的示例代码仍然可以编译(即:它可以找到 Pango 的标头),但由于未链接到正确的库而无法链接。
那么这应该如何运作呢?我是否必须通过 Pango 的各种 CMake 接口列出包含目录、库目录和库文件?或者是否有一些替代的包含机制可以像大多数其他 vcpkg 软件包一样处理细节?
请注意,我正在使用 Visual Studio 2019 的内置 CMake 功能来尝试使用这些功能进行构建。
我是Linux用户,只在Linux上开发。我知道如何使用 Make 和 CMake 来构建我的库,但随着我的进步和扩大项目的难度,我现在必须以最少的用户输入解决跨平台兼容性问题。
为了实现我的目标,vcpkg 是一个不错的选择吗?如果不是,那么在开发 Windows 应用程序时选择使用包管理器是否合理?
我的目标是,我的库的 Windows 用户在下载和安装后可以轻松地使用它们,即通过包含相关标头,并且理想情况下,如果使用 Eclipse 或 MSVC,则不必担心针对静态进行编译和链接。
请记住,我不是一名专业的软件开发人员,而是一名计算科学家,他试图不搞乱他工作中的软件工程部分,同时努力让最终用户(其他计算机科学研究员)的生活成为可能尽可能简单。
我正在寻找的是一个关于当今跨多个操作系统构建、运输和使用库的事实上的标准的观点。
vcpkg ×10
c++ ×6
cmake ×4
boost ×2
windows ×2
bash ×1
c++17 ×1
compilation ×1
cpp-netlib ×1
grpc ×1
macos ×1
raspberry-pi ×1
sqlite ×1
tbb ×1