#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 . И будут разные способы использования, следовательно, разные имена целей. Я бы хотел избежать этого…