簡體   English   中英

如何在linux上使用安裝了vcpkg的C庫?

[英]How to use C library installed with vcpkg on linux?

我正在嘗試根據說明使用 vcpkg 安裝 libwebsockets C 庫。 並且不明白的東西。 操作系統 - Ubuntu 20.04

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

庫已安裝,下一步該做什么? 如何用庫編譯測試文件?

問題更多是關於linux上如何使用vcpkg。你可以舉一個安裝vcpkg的另一個庫的例子。

庫已安裝,下一步該怎么做? 如何使用庫編譯測試文件?
問題更多是關於如何在 linux 上使用 vcpkg。

這個問題的答案實際上取決於您的構建系統和您想要使用的端口/庫,而不是平台本身。

在安裝 libwebsockets libwebsockets-config.cmake的情況下,您可以使用 CMake 並執行find_package(libwebsockets CONFIG REQUIRED)以獲取導入目標和LibwebsocketsTargets.cmake的端口導出。 當然,這需要將CMAKE_TOOLCHAIN_FILE設置為 vcpkg 工具鏈( <vcpkg_root>/scripts/buildsystems/vcpkg.cmake )或將其包含在CMakeLists.txt的第一個project()之前project()您希望閱讀的 vcpkg 文檔中提到了更多詳細信息) ....)

其他庫/端口可能會導出*.pc文件。 對於這些FindPkgConfig.cmake可以直接使用(請參閱 CMake 文檔),或者您可以設置PKG_CONFIG_PATH並為其他構建系統添加<vcpkg_root>/installed/<triplet (here probably: x64-linux)>/(debug/)lib/pkgconfig自動工具或手動生成文件等。

最后如何使用 vcpkg 或更准確地使用它的庫取決於您打算使用什么構建系統。

vcpkg是一個C/C++ package管理器,在windows中非常有必要。

但是在ubuntu中,本身就提供了非常完善的package管理機制。

因此,即使你是搭建跨平台的軟件系統,也不要在ubuntu中使用vcpkg:)

你可以試試這個:

$> sudo apt install libwebsockets-dev

這樣,你需要的libwebsockets header文件和庫文件就已經安裝好了,可以直接使用了。

這是另一個例子:

我想在 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/)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM