Vcpkg isn't working on windows with mingw
Asked Answered
G

2

2

i'm actually trying to make vcpkg with cmake and MinGW working on windows but it seems like he don't want to use MinGW

Here is the error :

-- 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)

and here is my 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
)

I use a CMakePresets to compiler with 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"
            } 
        }   
    ]
}

For the specification of the project, the vulkan SDK is installed, i use CMAKE 20.05, the latest VCPKG project on github. All my libs except VULKAN are submodule of the project, and i have visual studio build tools 2019 installed.

I don't want to use visual studio that why i use mingw as a generator.

If you need more information about the project, you can find it on github here :

https://github.com/real2k/ManiaEngine

Thanks in advance

Guinevere answered 26/6, 2021 at 17:30 Comment(0)
P
1

You’re using a mingw x86 toolchain, while the config file from the error message is for x64, so it was rejected.

Pamphylia answered 27/6, 2021 at 14:23 Comment(0)
J
2

You need to tell vcpkg which triplet to use via the following variables:

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

These can also be set in your presets.

See more in the vcpkg documentation here: https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md

Jaqitsch answered 26/6, 2021 at 18:5 Comment(4)
i still get the same error, when he check for cxx compiler and c compiler, he find the path to mingw g++ and gcc but he skip themGuinevere
Whenever you change toolchain settings, you need to delete your build folder and start fresh. Also that "skipped" message is only about skipping certain checks, the output in your question shows that CMake is using MinGWJaqitsch
I delete the build folder each time and i set the variable in the preset but i still get the exact same error shown in the questionGuinevere
and GLFW & GLM are directly fetched from github and all the file are hereGuinevere
P
1

You’re using a mingw x86 toolchain, while the config file from the error message is for x64, so it was rejected.

Pamphylia answered 27/6, 2021 at 14:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.