[英]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_directories
和link_directories
。
例如:
include_directories(${VCPKG_DIR}/packages/gtkmm_x64-linux/include/gtkmm-4.0/)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.