PkgConfig не может найти «glib-2.0» при попытке сборки с помощью CMake

Я пытаюсь скомпилировать программу, написанную на C++, с помощью CMake.

Содержимое файла CMakeLists.txt, в который входит код:

cmake_minimum_required(VERSION 3.21)
project(<redacted> C CXX)

set(CMAKE_CXX_STANDARD 23)

add_executable(<redacted> src/main.cpp
        src/<redacted>.h
        src/<redacted>.h src/<redacted>.cpp
        src/<redacted>.h
        src/<redacted>.h src/<redacted>.cpp
        src/<redacted>.h src/<redacted>.cpp
        src/<redacted>.h
        src/<redacted>.h src/<redacted>.c
        src/<redacted>.h)

find_package(PkgConfig REQUIRED)

pkg_search_module(GLIB REQUIRED glib-2.0)


include_directories(${GLIB_INCLUDE_DIRS})
link_directories(${GLIB_LIBRARY_DIRS})

target_link_libraries(<redacted> ${GLIB_LIBRARIES} gcrypt)

Когда я запускаю команду: cmake . -G "MinGW Makefiles" && make в w64devkit (или в Visual Studio, или VSCode), я получаю следующую ошибку:

-- Found PkgConfig: C:/Users/Jonathon/Downloads/pkg-config-lite-0.28-1_bin-win32/pkg-config-lite-0.28-1/bin/pkg-config.exe (found version "0.28")
-- Checking for module 'glib-2.0'
--   No package 'glib-2.0' found
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:634 (message):
  The following required packages were not found:

   - glib-2.0

Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:862 (_pkg_check_modules_internal)
  CMakeLists.txt:28 (PKG_CHECK_MODULES)


-- Configuring incomplete, errors occurred!

Похожий пост есть здесь, но это было на Linux, а я на Windows. Кроме того, было найдено решение: удалить строку из CMakeLists.txt, но этой строки нет в моем файле CMakeLists.txt.

Любая помощь будет высоко оценен. Спасибо


[Обновлять]

Я попытался установить glib с помощью conan, используя его как conanfile.txt:

[requires]
glib/2.78.3

[generators]
CMakeDeps
CMakeToolchain

Затем, когда я набираю команду conan install . --output-folder=build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake && cmake --build (как предложено здесь, потому что я получал сообщение «ОШИБКА: Conanfile не найден», когда я только что использовал conan install . --output-folder=build && cmake --build), я получаю следующий результат:

======== Input profiles ========
Profile host:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows


======== Computing dependency graph ========
Graph root
    conanfile.txt: C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\conanfile.txt
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916 - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2 - Cache
Build requirements
    autoconf/2.71#f9307992909d7fb3df459340f1932809 - Cache
    automake/1.16.5#058bda3e21c36c9aa8425daf3c1faf50 - Cache
    m4/1.4.19#b38ced39a01e31fef5435bc634461fd2 - Cache
    meson/1.2.2#04bdfb85d665c82b08a3510aee3ffd19 - Cache
    msys2/cci.latest#5a31efa2bde593541fd5ac3bcc50c01c - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21 - Cache
    pkgconf/2.0.3#f996677e96e61e6552d85e83756c328b - Cache
Resolved version ranges
    zlib/[>=1.2.11 <2]: zlib/1.3.1

======== Computing necessary packages ========
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4:67bfcb7b4b78262b9d05495e479dcd92f747316b#cea9c0f0dfa41e83aebd5d39c5a5cbf3 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01:750e9c8cf560085c96c0fa42531c45c18af8be50#29d02404508c39a0803c3bee40426924 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916:7bfde258ff4f62f75668d0896dbddedaa7480a0f#37e6c892e9418389fcf21227e9c1ae6b - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b:55052839d1d508208c0cd4c7594a7001c70287d1#bea6a5629dc31a80b4d489e5ef163ec4 - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd:7bfde258ff4f62f75668d0896dbddedaa7480a0f#9ef92719f5c05dca2f0dbb46f50d3f8d - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695:1bbffc30d8479a890917ef6674ab5e5f3c5b2036#d6a7c0162d1450645a9d56832ca25ae6 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2:7bfde258ff4f62f75668d0896dbddedaa7480a0f#20d10b761ec15eed7a1d61c86bc7415a - Cache
Build requirements
Skipped binaries
    autoconf/2.71, automake/1.16.5, m4/1.4.19, meson/1.2.2, msys2/cci.latest, ninja/1.11.1, pkgconf/2.0.3

======== Installing packages ========
bzip2/1.0.8: Already installed! (1 of 7)
zlib/1.3.1: Already installed! (2 of 7)
libiconv/1.17: Already installed! (3 of 7)
libffi/3.4.4: Already installed! (4 of 7)
pcre2/10.42: Already installed! (5 of 7)
pcre2/10.42: Appending PATH environment variable: C:\Users\Jonathon\.conan2\p\pcre2e09694aa47719\p\bin
libgettext/0.22: Already installed! (6 of 7)
glib/2.78.3: Already installed! (7 of 7)
WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
WARN: deprecated:     'cpp_info.names' used in: zlib/1.3.1, bzip2/1.0.8, pcre2/10.42, libiconv/1.17, libgettext/0.22
WARN: deprecated:     'cpp_info.build_modules' used in: bzip2/1.0.8
WARN: deprecated:     'env_info' used in: pcre2/10.42, libiconv/1.17, bzip2/1.0.8, glib/2.78.3

======== Finalizing install (deploy, generators) ========
conanfile.txt: Writing generators to C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build
conanfile.txt: Generator 'CMakeDeps' calling 'generate()'
conanfile.txt: CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(glib)
    target_link_libraries(... glib::glib)
conanfile.txt: Generator 'CMakeToolchain' calling 'generate()'
conanfile.txt: CMakeToolchain generated: conan_toolchain.cmake
conanfile.txt: Preset 'conan-default' added to CMakePresets.json. Invoke it manually using 'cmake --preset conan-default' if using CMake>=3.23
conanfile.txt: If your CMake version is not compatible with CMakePresets (<3.23) call cmake like: 'cmake <path> -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build\conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW'
conanfile.txt: CMakeToolchain generated: CMakePresets.json
conanfile.txt: CMakeToolchain generated: ..\CMakeUserPresets.json
conanfile.txt: Generating aggregated env files
conanfile.txt: Generated aggregated env files: ['conanbuild.bat', 'conanrun.bat']
Install finished successfully
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- Checking for one of the modules 'glib-2.0'
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:927 (message):
  None of the required 'glib-2.0' found
Call Stack (most recent call first):
  CMakeLists.txt:20 (pkg_search_module)


-- Configuring incomplete, errors occurred!

Теперь установлена ​​версия glib 2.78.3, потому что это последняя версия, доступная на conan. Самая ранняя версия, доступная на conan, — 2.65.0, поэтому, когда я попытался изменить conanfile, чтобы попытаться получить версию 2.0.0, это не сработало. Кроме того, версия 2.0.0 датирована 2002 годом, и я очень сомневаюсь, что проект, который я пытаюсь скомпилировать, использовал ее, потому что она была сделана в прошлом году.

Когда я вернулся к файлу CMakeLists.txt и изменил эту строку: pkg_search_module(GLIB REQUIRED glib-2.0) на pkg_search_module(GLIB REQUIRED glib-2.78.3), затем снова запустил команду conan install . --output-folder=build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake && cmake --build, я получаю такой вывод:

======== Input profiles ========
Profile host:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows


======== Computing dependency graph ========
Graph root
    conanfile.txt: C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\conanfile.txt
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916 - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2 - Cache
Build requirements
    autoconf/2.71#f9307992909d7fb3df459340f1932809 - Cache
    automake/1.16.5#058bda3e21c36c9aa8425daf3c1faf50 - Cache
    m4/1.4.19#b38ced39a01e31fef5435bc634461fd2 - Cache
    meson/1.2.2#04bdfb85d665c82b08a3510aee3ffd19 - Cache
    msys2/cci.latest#5a31efa2bde593541fd5ac3bcc50c01c - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21 - Cache
    pkgconf/2.0.3#f996677e96e61e6552d85e83756c328b - Cache
Resolved version ranges
    zlib/[>=1.2.11 <2]: zlib/1.3.1

======== Computing necessary packages ========
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4:67bfcb7b4b78262b9d05495e479dcd92f747316b#cea9c0f0dfa41e83aebd5d39c5a5cbf3 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01:750e9c8cf560085c96c0fa42531c45c18af8be50#29d02404508c39a0803c3bee40426924 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916:7bfde258ff4f62f75668d0896dbddedaa7480a0f#37e6c892e9418389fcf21227e9c1ae6b - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b:55052839d1d508208c0cd4c7594a7001c70287d1#bea6a5629dc31a80b4d489e5ef163ec4 - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd:7bfde258ff4f62f75668d0896dbddedaa7480a0f#9ef92719f5c05dca2f0dbb46f50d3f8d - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695:1bbffc30d8479a890917ef6674ab5e5f3c5b2036#d6a7c0162d1450645a9d56832ca25ae6 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2:7bfde258ff4f62f75668d0896dbddedaa7480a0f#20d10b761ec15eed7a1d61c86bc7415a - Cache
Build requirements
Skipped binaries
    autoconf/2.71, automake/1.16.5, m4/1.4.19, meson/1.2.2, msys2/cci.latest, ninja/1.11.1, pkgconf/2.0.3

======== Installing packages ========
bzip2/1.0.8: Already installed! (1 of 7)
zlib/1.3.1: Already installed! (2 of 7)
libiconv/1.17: Already installed! (3 of 7)
libffi/3.4.4: Already installed! (4 of 7)
pcre2/10.42: Already installed! (5 of 7)
pcre2/10.42: Appending PATH environment variable: C:\Users\Jonathon\.conan2\p\pcre2e09694aa47719\p\bin
libgettext/0.22: Already installed! (6 of 7)
glib/2.78.3: Already installed! (7 of 7)
WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
WARN: deprecated:     'cpp_info.names' used in: bzip2/1.0.8, libiconv/1.17, libgettext/0.22, zlib/1.3.1, pcre2/10.42
WARN: deprecated:     'cpp_info.build_modules' used in: bzip2/1.0.8
WARN: deprecated:     'env_info' used in: glib/2.78.3, bzip2/1.0.8, libiconv/1.17, pcre2/10.42

======== Finalizing install (deploy, generators) ========
conanfile.txt: Writing generators to C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build
conanfile.txt: Generator 'CMakeDeps' calling 'generate()'
conanfile.txt: CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(glib)
    target_link_libraries(... glib::glib)
conanfile.txt: Generator 'CMakeToolchain' calling 'generate()'
conanfile.txt: CMakeToolchain generated: conan_toolchain.cmake
conanfile.txt: Preset 'conan-default' added to CMakePresets.json. Invoke it manually using 'cmake --preset conan-default' if using CMake>=3.23
conanfile.txt: If your CMake version is not compatible with CMakePresets (<3.23) call cmake like: 'cmake <path> -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build\conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW'
conanfile.txt: CMakeToolchain generated: CMakePresets.json
conanfile.txt: CMakeToolchain generated: ..\CMakeUserPresets.json
conanfile.txt: Generating aggregated env files
conanfile.txt: Generated aggregated env files: ['conanbuild.bat', 'conanrun.bat']
Install finished successfully
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- Checking for one of the modules 'glib-2.0'
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:927 (message):
  None of the required 'glib-2.0' found
Call Stack (most recent call first):
  CMakeLists.txt:20 (pkg_search_module)


-- Configuring incomplete, errors occurred!

C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build>cd ..

C:\Users\Jonathon\source\tlsdump-main\tlsdump-main>conan install . --output-folder=build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake && cmake --build

======== Input profiles ========
Profile host:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=193
os=Windows


======== Computing dependency graph ========
Graph root
    conanfile.txt: C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\conanfile.txt
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916 - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2 - Cache
Build requirements
    autoconf/2.71#f9307992909d7fb3df459340f1932809 - Cache
    automake/1.16.5#058bda3e21c36c9aa8425daf3c1faf50 - Cache
    m4/1.4.19#b38ced39a01e31fef5435bc634461fd2 - Cache
    meson/1.2.2#04bdfb85d665c82b08a3510aee3ffd19 - Cache
    msys2/cci.latest#5a31efa2bde593541fd5ac3bcc50c01c - Cache
    ninja/1.11.1#77587f8c8318662ac8e5a7867eb4be21 - Cache
    pkgconf/2.0.3#f996677e96e61e6552d85e83756c328b - Cache
Resolved version ranges
    zlib/[>=1.2.11 <2]: zlib/1.3.1

======== Computing necessary packages ========
Requirements
    bzip2/1.0.8#457c272f7da34cb9c67456dd217d36c4:67bfcb7b4b78262b9d05495e479dcd92f747316b#cea9c0f0dfa41e83aebd5d39c5a5cbf3 - Cache
    glib/2.78.3#0cd1865c8603d90b3bc5858065e16d01:750e9c8cf560085c96c0fa42531c45c18af8be50#29d02404508c39a0803c3bee40426924 - Cache
    libffi/3.4.4#35eb63842b505824b70aedc1baefc916:7bfde258ff4f62f75668d0896dbddedaa7480a0f#37e6c892e9418389fcf21227e9c1ae6b - Cache
    libgettext/0.22#2c87563d7a69544dd9379f038aca3b0b:55052839d1d508208c0cd4c7594a7001c70287d1#bea6a5629dc31a80b4d489e5ef163ec4 - Cache
    libiconv/1.17#73fefc1b696e069df90fd1d18aa63edd:7bfde258ff4f62f75668d0896dbddedaa7480a0f#9ef92719f5c05dca2f0dbb46f50d3f8d - Cache
    pcre2/10.42#a7a2c122056510509a7525c83d6a6695:1bbffc30d8479a890917ef6674ab5e5f3c5b2036#d6a7c0162d1450645a9d56832ca25ae6 - Cache
    zlib/1.3.1#f52e03ae3d251dec704634230cd806a2:7bfde258ff4f62f75668d0896dbddedaa7480a0f#20d10b761ec15eed7a1d61c86bc7415a - Cache
Build requirements
Skipped binaries
    autoconf/2.71, automake/1.16.5, m4/1.4.19, meson/1.2.2, msys2/cci.latest, ninja/1.11.1, pkgconf/2.0.3

======== Installing packages ========
bzip2/1.0.8: Already installed! (1 of 7)
zlib/1.3.1: Already installed! (2 of 7)
libiconv/1.17: Already installed! (3 of 7)
libffi/3.4.4: Already installed! (4 of 7)
pcre2/10.42: Already installed! (5 of 7)
pcre2/10.42: Appending PATH environment variable: C:\Users\Jonathon\.conan2\p\pcre2e09694aa47719\p\bin
libgettext/0.22: Already installed! (6 of 7)
glib/2.78.3: Already installed! (7 of 7)
WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
WARN: deprecated:     'cpp_info.names' used in: pcre2/10.42, libiconv/1.17, bzip2/1.0.8, zlib/1.3.1, libgettext/0.22
WARN: deprecated:     'cpp_info.build_modules' used in: bzip2/1.0.8
WARN: deprecated:     'env_info' used in: pcre2/10.42, bzip2/1.0.8, glib/2.78.3, libiconv/1.17

======== Finalizing install (deploy, generators) ========
conanfile.txt: Writing generators to C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build
conanfile.txt: Generator 'CMakeDeps' calling 'generate()'
conanfile.txt: CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(glib)
    target_link_libraries(... glib::glib)
conanfile.txt: Generator 'CMakeToolchain' calling 'generate()'
conanfile.txt: CMakeToolchain generated: conan_toolchain.cmake
conanfile.txt: Preset 'conan-default' added to CMakePresets.json. Invoke it manually using 'cmake --preset conan-default' if using CMake>=3.23
conanfile.txt: If your CMake version is not compatible with CMakePresets (<3.23) call cmake like: 'cmake <path> -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=C:\Users\Jonathon\source\tlsdump-main\tlsdump-main\build\conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW'
conanfile.txt: CMakeToolchain generated: CMakePresets.json
conanfile.txt: CMakeToolchain generated: ..\CMakeUserPresets.json
conanfile.txt: Generating aggregated env files
conanfile.txt: Generated aggregated env files: ['conanbuild.bat', 'conanrun.bat']
Install finished successfully
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- Checking for one of the modules 'glib-2.78.3'
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:927 (message):
  None of the required 'glib-2.78.3' found
Call Stack (most recent call first):
  CMakeLists.txt:20 (pkg_search_module)


-- Configuring incomplete, errors occurred!

И для меня это действительно не имеет смысла, потому что при установке пакетов четко отображается эта строка ярко-зеленого цвета: glib/2.78.3: Already installed! (7 of 7), а вскоре после этого она все еще показывает:

-- Checking for one of the modules 'glib-2.78.3'
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPkgConfig.cmake:927 (message):
  None of the required 'glib-2.78.3' found

Так что я действительно понятия не имею, что происходит. glib явно установлен, но cmake pkgconfig по какой-то причине все еще не находит его. Что я делаю не так?

Вы установили glib? Что выводит pkg-config glib-2.0?

Tsyvarev 28.04.2024 17:02

Результат: pkg-config: could not find package 'glib-2.0' Я попробовал следовать совету здесь, но установка GTK не решила проблему.

Jonathon Quick 28.04.2024 17:30

Кроме того, я только что отредактировал исходное сообщение, включив в него некоторые вещи, которые я пробовал до сих пор, например, установку glib с помощью conan, что до сих пор не решило проблему, с которой pkgmanager не нашел его. Я испробовал все, что только мог придумать, и, возможно, есть еще что попробовать, но это мой первый раз, когда я вообще компилирую проект C++, так что я также впервые использую cmake.

Jonathon Quick 28.04.2024 23:37

И вывод pkg-config glib-2.0 по-прежнему равен pkg-config: could not find package 'glib-2.0'

Jonathon Quick 28.04.2024 23:58

Вы рассматривали возможность использования MSYS2? Я только что попробовал: pacman -S mingw-w64-ucrt-x86_64-glib2 установить glib, затем pkg-config --libs --cflags glib-2.0 распечатать флаги.

HolyBlackCat 30.04.2024 18:30

Спасибо, я попробую, когда приду домой и сообщу, сработает ли это. Самое главное — то, что работает, но мне любопытно узнать, что на самом деле вызывает проблему.

Jonathon Quick 30.04.2024 18:38

Я никогда раньше не использовал ни один из этих инструментов сборки C++, поэтому понятия не имею, каково ожидаемое поведение любого из них. Все, что у меня есть, — это знания других языков программирования (более высокого уровня), таких как Python и C#. Обычно я хорошо решаю проблемы, но у меня нет опыта работы с C++.

Jonathon Quick 30.04.2024 18:45

Я думаю, pkg-config читает некоторые переменные env, чтобы знать, где искать библиотеки (PKG_CONFIG_PATH, PKG_CONFIG_LIBDIR). Предполагается также, что у него есть каталоги по умолчанию, но я не уверен, какие они есть для загруженной вами автономной версии. Вот почему я всегда предлагаю в таких ситуациях MSYS2: они настраивают поставляемые инструменты для совместной работы. Вы устанавливаете библиотеку, и она появляется в pkg-config и CMake с нулевой конфигурацией (если это не очевидно, нужно установить из них все инструменты: CMake, pkg-config, gcc и glib). Это тот опыт, который вы получите в Linux «из коробки».

HolyBlackCat 30.04.2024 18:51

Отличная информация, спасибо. На самом деле я обычно являюсь пользователем Linux, но это должно быть в Windows. Также, пожалуйста, напишите ответ вместо комментария, и если ваше решение сработает, я награду вас наградой.

Jonathon Quick 30.04.2024 18:56

Скорее всего, PKG_CONFIG_LIBDIR неверен. Это объясняет, почему в этом посте (в котором есть то же сообщение об ошибке, что и у меня) решением было удалить строку из CMakeLists.txt, которая была связана именно с этой переменной env.

Jonathon Quick 30.04.2024 19:03

Также, чтобы уточнить, какой из этих двух способов должен работать? (1) glib или любой другой пакет загружается и устанавливается непосредственно в проект, который необходимо скомпилировать, и больше нигде. Или (2) существует какой-то глобальный каталог, в который вы устанавливаете пакеты типа glib, а затем они добавляются в проект? Я думаю, что первое имеет больше смысла, но я не знаю.

Jonathon Quick 30.04.2024 19:08

MSYS2 устанавливается глобально. Он работает так же, как дистрибутив Linux (и использует pacman Arch для управления пакетами). Я не уверен, как Конан это делает.

HolyBlackCat 30.04.2024 19:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
559
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подводя итог моему объяснению в комментариях:

Должна быть возможность установить переменную среды PKG_CONFIG_PATH, чтобы указать на установку glib. pkg-config ищет библиотеки в каталогах, указанных в этой переменной (и некоторых других).

Но вместо ручной настройки я бы лучше рекомендовал использовать MSYS2. Используйте его для установки всех необходимых инструментов: pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-pkgconf mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-glib2.

Откройте терминал MSYS2 и скомпилируйте его (чтобы установить правильные переменные env). Убедитесь, что в подсказке терминала написано UCRT64 пурпурным текстом (Что такое среды MSYS2? Как мне выбрать одну?).

Вы можете попробовать pkg-config --libs --cflags glib-2.0 и увидеть, что он находит библиотеку.

Спасибо за Ваш ответ. Хотя это решает проблему, связанную с тем, что pkg-config не находит glib-2.0, о чем я и задавал, есть еще дополнительные шаги для его компиляции, над которыми я все еще разбираюсь. Когда я установил эти пакеты в MSYS2, а затем набрал команду pkg-config --libs --cflags glib-2.0, он их нашел. Затем я вчера попробовал сборку, и он сказал, что все прошло успешно, но я не могу найти никаких двоичных файлов, а каталог, в который, как говорится, были записаны файлы сборки, вообще не содержит никаких файлов .exe или каких-либо исполняемых файлов. Наверное я опять что-то не так понял.

Jonathon Quick 01.05.2024 20:24

Также это цитата из документации MSYS2: «При создании проектов для Windows с помощью CMake (в отличие от создания проектов, которые будут выполняться в среде выполнения эмуляции posix MSYS2) обязательно установите версию CMake MinGW, т. е. установите например, mingw-w64-x86_64-cmake". Означает ли это, что сборки среды ucrt будут работать только из терминала MSYS2?

Jonathon Quick 01.05.2024 20:27

ПС. Вам не обязательно отвечать, поскольку вы уже ответили на исходный вопрос, но я был бы признателен, если бы вы все же смогли это прояснить.

Jonathon Quick 01.05.2024 20:28

@JonathonQuick "будет работать только из терминала MSYS2?" Нет, они плохо выразились. Они говорят, что нужно устанавливать не cmake, а mingw-...-cmake. Какой из последних, ucrt или нет, особого значения не имеет. (Первый принадлежит среде «MSYS», см. вторую ссылку в моем ответе и/или msys2.org/docs/environments). Что касается того, где находятся ваши exe-файлы, они должны быть там. Попробуйте поискать в подкаталогах или задайте целый отдельный вопрос со всеми подробностями.

HolyBlackCat 01.05.2024 20:38

«Он сказал, что все прошло успешно, но я не могу найти никаких двоичных файлов, а каталог, в который, как говорится, были записаны файлы сборки, вообще не содержит никаких файлов .exe или каких-либо исполняемых файлов». — Запуск cmake лишь настраивает проект. Для сборки запустите cmake --build из каталога сборки.

Tsyvarev 02.05.2024 09:20

@JonathonQuick ^

HolyBlackCat 02.05.2024 09:23

Другие вопросы по теме