SDL найден с помощью PkgConfig и MSVC (не компилируется)

#c #visual-c #cmake #cross-platform #pkg-config

#c #visual-c #cmake #кроссплатформенный #pkg-config

Вопрос:

Я пытаюсь настроить кроссплатформенный проект. В Windows я установил пакет SDL2 с MSYS2 для x86 и x64.

В моем CMakeLists.txt У меня есть:

 find_package(PkgConfig REQUIRED)

pkg_search_module(SDL2
        REQUIRED sdl2 sdl
        IMPORTED_TARGET)
if(TARGET PkgConfig::SDL2)
    message(STATUS "Found SDL2")
endif()
  

Пакет, похоже, найден как для MinGW, так и для MSVC.

Простая программа компилируется с помощью MinGW

 #include <SDL/SDL.h>

#undef main

int main()
{
    return 0;
}

  

Однако с помощью MSVC SDL, и программа не компилируется.

 C:devreposUWCASdkSandboxJoySDLjoyTest.cpp(2): fatal error C1083: Cannot open include file: 'SDL/SDL.h': No such file or directory
NMAKE : fatal error U1077: 'C:PROGRA~2MICROS~12019COMMUN~1VCToolsMSVC1426~1.288binHostx86x64cl.exe' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.26.28801binHostX86x64nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.26.28801binHostX86x64nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.26.28801binHostX86x64nmake.exe"' : return code '0x2'
Stop.
  

Невозможно ли использовать PkgConfig с MSVC? Или мне следует использовать другой менеджер пакетов?

Комментарии:

1. Даже если бы pkg config работал с msvc, пакет mingw все равно был бы бесполезен. Было бы лучшей идеей загрузить и собрать sdl из исходного кода.

2. Я бы хотел, чтобы мой скрипт Cmake был достаточно простым и совместимым как с Linux, так и с Windows. С MinGW это вообще не проблема. Но в случае, если я загружу и соберу из исходного кода, мне придется добавить пользовательский скрипт FindSDL2.cmake . И будут разные способы использования, следовательно, разные имена целей. Я бы хотел избежать этого…