0

I am building SDL2 game app with cmake. My structure is:

\build
\external
    external.cmake
    sdl2.cmake
CMakeLists.txt
main.cpp

CMakeFiles.txt:

cmake_minimum_required(VERSION 3.10)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


project(mygame)


find_package(SDL2 CONFIG REQUIRED)
include(${CMAKE_CURRENT_SOURCE_DIR}/external/external.cmake)
add_executable(mygame main.cpp)
target_link_libraries(mygame PRIVATE SDL2::SDL2main)
#target_link_libraries(mygame PRIVATE SDL2::SDL2-static)

external.cmake:

cmake_minimum_required(VERSION 3.10)

include(FetchContent)
set(FETCHCONTENT_QUIET FALSE)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external)
include(sdl2)

sdl2.cmake:

FetchContent_Declare(
    sdl2
    GIT_REPOSITORY "https://github.com/libsdl-org/SDL"
    GIT_TAG "2.0.22"
    GIT_PROGRESS TRUE
)

FetchContent_MakeAvailable(sdl2)
include_directories(${SDL2_INCLUDE_DIRS})

main.cpp:

#include <stdio.h>

int main(int argv, char** args) {
    printf("Test successful");
    return 0;
}

When I build i get:

c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libSDL2main.a when searching for -lSDL2main
[build] c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib\libSDL2main.a when searching for -lSDL2main

Is that a problem? All in all I get Build finished with exit code 0 But once I uncomment target_link_libraries(mygame PRIVATE SDL2::SDL2-static) I get:

[build] mingw32-make[2]: *** No rule to make target '/opt/local/i686-w64-mingw32/lib/libSDL2.a', needed by 'mygame.exe'.  Stop.
[build] mingw32-make[1]: *** [CMakeFiles\Makefile2:104: CMakeFiles/mygame.dir/all] Error 2
[build] mingw32-make[1]: *** Waiting for unfinished jobs....
[build] [  1%] Built target SDL2main
[build] [ 82%] Built target SDL2
[build] [ 99%] Built target SDL2-static
[build] mingw32-make: *** [Makefile:135: all] Error 2
[proc] The command: C:\Users\felip\AppData\Local\Programs\Python\Python39\Scripts\cmake.EXE --build c:/Users/felip/Desktop/cpp/cmake_tutorial/build --config Debug --target all -j 10 -- exited with code: 2 and signal: null
[build] Build finished with exit code 2

I am using Windows, VS Code, GCC 6.3.0 mingw32. What should I do? Thanks for help

Filip
  • 1
  • 1
    This looks like you have incompatible SDL2 binaries lying around in the compiler directory. Did you put them there? Also, obligatory reminder that GCC 6 is outdated, and you can get GCC 12 from [MSYS2](https://stackoverflow.com/q/30069830/2752075). – HolyBlackCat Oct 15 '22 at 10:04

0 Answers0