0

Я подключил SFML через этот CMakeLists.txt

include(mgw.cmake)

cmake_minimum_required(VERSION 2.8)

project(SFMLINCLUDETEST)

set(SFML_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/SFMLMGW/include)
set(SFML_LIB_DIR ${CMAKE_SOURCE_DIR}/SFMLMGW/lib)
#message(${SFML_LIB_DIR})
set(SFML_LIBRARIES
    ${SFML_LIB_DIR}/libsfml-graphics-s-d.a
    ${SFML_LIB_DIR}/libsfml-window-s-d.a
    ${SFML_LIB_DIR}/libsfml-system-s-d.a)
set(SFML_DEPENDENCIES
    opengl32
    winmm
    gdi32
    ${SFML_LIB_DIR}/libfreetype.a
    )


include_directories(${SFML_INCLUDE_DIR})


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSFML_STATIC -static-libgcc -static-libstdc++")
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})

Файл mgw.cmake просто говорит что нужно использовать mingw:

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

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

# target environment on the build host system
#   set 1st to dir with the cross compiler's C/C++ headers/libs
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

# modify default behavior of FIND_XXX() commands to
# search for headers/libs in the target environment and
# search for programs in the build host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

И у меня появляются ошибки такого рода:

../SFMLMGW/lib/libsfml-graphics-s-d.a(Texture.cpp.obj): In function `ZN2sf7TextureC2Ev':
D:\Programming\C++\Releases\MinGW32-PosixDwarf730r0\build-SFML\src\SFML\Graphics/D:/Programming/C++/Releases/_Sources/SFML/src/SFML/Graphics/Texture.cpp:72: undefined reference to `_Unwind_Resume'

и.т.д.

Как это исправить?

Если нужно:

Система: Linux Mint 19 tara

версия mingw: 7.3

версия SFML: 2.5.1

папка SFMLMGW лежит рядом с CMakeLists.txt

Как я понимаю это проблемы не CMakeLists.txt а компилятора, ведь файл CMakeLists.txt легко собирается

1 Answers1

0

Такое ощущение, что вы схватили какие-то собранные библиотеки и они оказываются несовместимыми с остальным (в плане обработки исключений). Попробуйте собрать sfml самостоятельно, с использованием тех же настроек, что и в проекте.

user7860670
  • 29,796