gcc - SDL2 और क्लीयन को लिंक करना



linker sdl-2 (1)

मेरे पास एसडीएल 2 निर्देशिका और लिबिट्स की ओर इशारा करते हुए क्लोन है, लेकिन जब मैं निर्माण करने की कोशिश करता हूं, तो यह पुस्तकालयों को लिंक करने में विफल रहता है कोई राय कि इसे कैसे ठीक किया जाए?

CMakeLists:

cmake_minimum_required(VERSION 3.3)

project(cavestory_development)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -lSDL2")

set(SDL2_INCLUDE_DIR C:/SDL2-2.0.3/i686-w64-mingw32/include/SDL2)

set(SDL2_LIBRARY C:/SDL2-2.0.3/i686-w64-mingw32/lib)

find_package(SDL2 REQUIRED)

include_directories(${SDL2_INCLUDE_DIR})

set(SOURCE_FILES main.cpp)

add_executable(cavestory_development ${SOURCE_FILES})

target_link_libraries(cavestory_development ${SDL2_LIBRARY})

त्रुटियां बनाएं:

"C:\Program Files (x86)\JetBrains\CLion 1.1\bin\cmake\bin\cmake.exe" --build C:\Users\conne_000\.clion11\system\cmake\generated\8a943732\8a943732\Debug --target cavestory_development -- -j 8
[ 50%] Linking CXX executable cavestory_development.exe
CMakeFiles\cavestory_development.dir/objects.a(main.cpp.obj): In function `SDL_main':
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:11: undefined reference to `SDL_Init'
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:21: undefined reference to `SDL_CreateWindow'
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:26: undefined reference to `SDL_GetError'
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:32: undefined reference to `SDL_Delay'
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:35: undefined reference to `SDL_DestroyWindow'
C:/Users/conne_000/Documents/ClionProjects/cavestory_development/main.cpp:38: undefined reference to `SDL_Quit'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `[email protected]'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [cavestory_development.exe] Error 1
CMakeFiles\cavestory_development.dir\build.make:96: recipe for target 'cavestory_development.exe' failed
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/cavestory_development.dir/all' failed
mingw32-make.exe[2]: *** [CMakeFiles/cavestory_development.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/cavestory_development.dir/rule] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/cavestory_development.dir/rule' failed
mingw32-make.exe: *** [cavestory_development] Error 2
Makefile:117: recipe for target 'cavestory_development' failed

आपको विंडोज़ पर एसडीएल 2 के साथ आरंभ करने के लिए यहां एक न्यूनतम उदाहरण दिया गया है (मुख्य सीपीपी बस में हैलोईएफू से हैलो एसडीएल शामिल है)

cmake_minimum_required(VERSION 3.0)
project(hello_sdl2)

# configure the SDL (cf. "SDL2-2.0.3\i686-w64-mingw32\lib\pkgconfig\sdl2.pc")
# C++ flags
set(SDL2_Flags "-mwindows -Wl,--no-undefined -static-libgcc")
# library paths
set(SDL2_ROOT     "D:/PATH/TO/SDL2-2.0.3/i686-w64-mingw32")
set(SDL2_Includes "${SDL2_ROOT}/include")
set(SDL2_LibDir   "${SDL2_ROOT}/lib")
# imported targets for CMake (cf. https://cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets)
add_library(SDL2     STATIC IMPORTED)
add_library(SDL2main STATIC IMPORTED)
set_property(TARGET SDL2     PROPERTY IMPORTED_LOCATION "${SDL2_LibDir}/libSDL2.a")
set_property(TARGET SDL2main PROPERTY IMPORTED_LOCATION "${SDL2_LibDir}/libSDL2main.a")
# the libs to link against
# note: as always with gcc, the order is important...
set(SDL2_Libs mingw32 SDL2 SDL2main m dinput8 dxguid dxerr8 user32 gdi32 winmm imm32 ole32 oleaut32 shell32 version uuid)

# configure the project
# include the SDL flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${SDL2_Flags}")
# collect the sources
set(SOURCE_FILES main.cpp)
# define the target
add_executable(hello_sdl2 ${SOURCE_FILES})
# include the SDL headers
target_include_directories(hello_sdl2 SYSTEM PRIVATE ${SDL2_Includes})
# link against the SDL (and its dependencies)
target_link_libraries(hello_sdl2 ${SDL2_Libs})

एसडीएल 2 -2.0.3 , मिनजीडब्ल्यू -64 आई 686-5.2.0-पॉज़िक्स-ड्वार्फ-आरटी_ वी 4-रिवेट और क्लोन 1.2 ईएपी (142.5239.6 का निर्माण) के साथ Win8.1 64bits पर परीक्षण किया गया