Vcpkg не работает в окнах с mingw

Я на самом деле пытаюсь заставить vcpkg с cmake и MinGW работать с окнами, но похоже, что он не хочет использовать MinGW

Вот ошибка:

-- Running vcpkg install - done
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at vcpkg/scripts/buildsystems/vcpkg.cmake:771 (_find_package):
  Could not find a configuration file for package "glfw3" that is compatible
  with requested version "".

  The following configuration files were considered but not accepted:

    C:/Users/ErikT/Desktop/ManiaEngine/build/vcpkg_installed/x64-windows/share/glfw3/glfw3Config.cmake, version: 3.3.4 (64bit)

Call Stack (most recent call first):
  CMakeLists.txt:7 (find_package)

и вот мой cmake

cmake_minimum_required(VERSION 3.20)
project(ManiaEngine)

SET(CMAKE_CXX_STANDARD 17)

## Find dependencies
find_package(glfw3 REQUIRED)
find_package(glm REQUIRED)
find_package(Vulkan REQUIRED)


## Create ManiaEngine executable
add_executable(ManiaEngine 
    source/Launch.cpp
    source/Window.cpp
    )

target_include_directories(ManiaEngine 
  PRIVATE 
    "${CMAKE_CURRENT_LIST_DIR}/source"
)

target_link_libraries(
  ManiaEngine
  PRIVATE
    glfw
    glm::glm
    Vulkan::Vulkan
)

Я использую CMakePresets для компилятора с vcpkg:

{
    "version": 2,
    "cmakeMinimumRequired": {
      "major": 3,
      "minor": 20,
      "patch": 0
    },
    "configurePresets": [
        {
            "name": "unix",
            "displayName": "Default Config",
            "description": "Default build using Make and vcpkg",
            "generator": "Unix Makefiles",
            "binaryDir": "${sourceDir}/build",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release",
                "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake"
            }
        },
            {
            "name": "msvc",
            "displayName": "Default MSVC",
            "description": "Default build using Visual Studio and vcpkg",
            "generator": "Visual Studio 16 2019",
            "binaryDir": "${sourceDir}/build",
            "cacheVariables": {
            "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake"
            } 
        },
        {
            "name": "mingw",
            "displayName": "Default MinGW",
            "description": "Default build using MinGW and vcpkg",
            "generator": "MinGW Makefiles",
            "binaryDir": "${sourceDir}/build",
            "cacheVariables": {
            "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake"
            } 
        }   
    ]
}

Для спецификации проекта установлен vulkan SDK, я использую CMAKE 20.05, последний проект VCPKG на github. Все мои библиотеки, кроме VULKAN, являются подмодулем проекта, и у меня установлены инструменты сборки Visual Studio 2019.

Я не хочу использовать визуальную студию, поэтому использую mingw в качестве генератора.

Если вам нужна дополнительная информация о проекте, вы можете найти ее на github здесь:

https://github.com/real2k/ManiaEngine

заранее спасибо


person Erik Tellier    schedule 26.06.2021    source источник


Ответы (2)


Вы используете набор инструментов mingw x86, а файл конфигурации из сообщения об ошибке предназначен для x64, поэтому он был отклонен.

person xev    schedule 27.06.2021

Вам нужно указать vcpkg, какой триплет использовать, с помощью следующих переменных:

export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic

Их также можно установить в ваших пресетах.

Дополнительную информацию см. В документации по vcpkg здесь: https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md

person Alex Reinking    schedule 26.06.2021
comment
Я все еще получаю ту же ошибку, когда он проверяет компилятор cxx и компилятор c, он находит путь к mingw g ++ и gcc, но пропускает их - person Erik Tellier; 26.06.2021
comment
Всякий раз, когда вы меняете настройки инструментальной цепочки, вам нужно удалить папку сборки и начать все заново. Кроме того, это пропущенное сообщение касается только пропуска определенных проверок, вывод в вашем вопросе показывает, что CMake использует MinGW - person Alex Reinking; 26.06.2021
comment
Я удаляю папку сборки каждый раз и устанавливаю переменную в предустановке, но все равно получаю ту же ошибку, что и в вопросе - person Erik Tellier; 26.06.2021
comment
и GLFW и GLM напрямую загружаются из github, и все файлы здесь - person Erik Tellier; 26.06.2021