如何使用C库和vcpkg在linux上安装吗?



我试图安装libwebsockets C库与vcpkg根据指令。还有不明白的事情。OS - Ubuntu 20.04

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install [library-name]

库已安装,下一步该做什么?如何用库编译测试文件?

这个问题更多的是关于如何在linux上使用vcpkg。您可以给出与vcpkg一起安装的另一个库的示例。

下面是另一个例子:

我想在ubuntu 20.04 LTS中安装gtkmm4,因为gtkmm4不能用于apt下载,所以我用vcpkg安装它。

为了简化,我将VCPKG_DIR设置为我克隆的vcpkg目录。

export VCPKG_DIR=/path/to/vckpg

对于c++程序,你可以像下面这样写CMake文件

PROJECT(gtkmmtest)
cmake_minimum_required(VERSION 3.10)
set(VCPKG_DIR $ENV{VCPKG_DIR})
include(${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake) # --> important
# Use the package PkgConfig to detect GTK+ headers/library files
FIND_PACKAGE(PkgConfig REQUIRED)
FIND_PACKAGE(Threads REQUIRED)
pkg_check_modules(GTK4 REQUIRED gtk4)
PKG_CHECK_MODULES(GTKMM gtkmm-4.0)
include_directories(${GTK4_INCLUDE_DIRS})
include_directories(${GTKMM_INCLUDE_DIRS})
link_directories(${VCPKG_DIR}/packages/gtk_x64-linux/lib)
link_directories(${GTK4_LIBRARY_DIRS})
add_definitions(${GTK4_CFLAGS_OTHER})
target_link_libraries(${GTKMMTEST} PRIVATE  ${GTK4_LIBRARIES} ${GTKMM_LIBRARIES} pthread)

完整的CMake文件可以在这里找到

如果没有PkgConfig可用,仍然可以使用标准的include_directorieslink_directories

,

include_directories(${VCPKG_DIR}/packages/gtkmm_x64-linux/include/gtkmm-4.0/)

库已安装,下一步该做什么?如何用库编译测试文件?
这个问题是关于如何在linux上使用vcpkg的。

这个问题的答案实际上取决于你的构建系统和你想要使用的端口/库,而不是平台本身。

在libwebsocketslibwebsockets-config.cmake安装的情况下,你可以使用CMake和做一个find_package(libwebsockets CONFIG REQUIRED)来获得LibwebsocketsTargets.cmake内端口导出的导入目标。当然这需要设置CMAKE_TOOLCHAIN_FILEvcpkg工具链(<vcpkg_root>/scripts/buildsystems/vcpkg.cmake)或包括在第一project()CMakeLists.txt(更多细节vcpkg文档中提到你希望阅读…)

其他库/端口可能导出*.pc文件。对于这些FindPkgConfig.cmake可以直接使用(参见CMake文档),或者你可以设置PKG_CONFIG_PATH和前置<vcpkg_root>/installed/<triplet (here probably: x64-linux)>/(debug/)lib/pkgconfig为其他构建系统,如autotools或手动制作文件等。

最后,如何使用vcpkg,或者更准确地说,如何使用它的库取决于你打算使用什么构建系统。

vcpkg是一个C/c++包管理器,在windows中非常必要。

然而,在ubuntu中,它本身提供了一个非常完整的包管理机制。

因此,即使你正在构建一个跨平台的软件系统,也不要在ubuntu中使用vcpkg:)

你可以试试:

$> sudo apt install libwebsockets-dev

这样,你需要的libwebsockets头文件和库文件就已经安装好了,可以直接使用了。

最新更新