Почему при попытке кросс-компиляции для Windows с помощью CMake проект не может найти библиотеки SDL2?Linux

Anonymous
Почему при попытке кросс-компиляции для Windows с помощью CMake проект не может найти библиотеки SDL2?

Сообщение Anonymous »

Я использую Ubuntu и пытаюсь выполнить кросс-компиляцию для Windows. Я установил компилятор x86_64-w64-mingw32. Я установил библиотеки SDL2 и SDL_Image для x86_64-w64-mingw32.
Я настроил свой файл CMakeLists следующим образом:

Код: Выделить всё

    set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)

# cross compilers to use for C, C++ and Fortran
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)

# target environment on the build host system
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

# modify default behavior of FIND_XXX() commands
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")

find_package(SDL2 REQUIRED)
find_package(SDL2_Image REQUIRED)

include_directories(${SDL2_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIRS} )
target_link_libraries(MyFirstProject ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} )
Когда я приступаю к сборке проекта, я получаю ошибки, связанные с тем, что не удается найти код для SDL2:

неопределенная ссылка на `SDL_Init'

Я знаю, что каталоги включения найдены, потому что, если я управляю щелчком по функции SDL2, я могу видеть файл заголовка:
Изображение

Но по какой-то причине сами библиотеки не найдены. Я вижу их там, где у меня установлен компилятор x86_64-w64-mingw32, но проект их не находит. Есть ли что-то, чего мне не хватает в моем CMake? Когда я компилирую для Linux, все работает.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -locate-th

Вернуться в «Linux»