我最近设法找到了与 SDL2 相关的这个问题的解决方案,但不知何故,这些解决方案不适用于 SDL1.2。我尝试使用标志-lmingw32 -lSDL -lSDLmain
并添加add_definitions(-DSDL_MAIN_HANDLED)
到 CMakeLists.txt 文件的末尾。但是我仍然收到以下错误消息:
====================[ Build | Graphics_project | Debug ]========================
"A:\CLion 2019.2.5\bin\cmake\win\bin\cmake.exe" --build D:\Coding\Projects\Graphics_project\cmake-build-debug --target Graphics_project -- -j 4
[ 50%] Linking CXX executable Graphics_project.exe
D:/Coding/MSYS2/mingw32/bin/../lib/gcc/i686-w64-mingw32/9.3.0/../../../../i686-w64-mingw32/bin/ld.exe: D:/Coding/MSYS2/mingw32/bin/../lib/gcc/i686-w64-mingw32/9.3.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o): in function `main':
D:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [Graphics_project.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/Graphics_project.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/Graphics_project.dir/rule] Error 2
CMakeFiles\Graphics_project.dir\build.make:85: recipe for target 'Graphics_project.exe' failed
CMakeFiles\Makefile2:74: recipe for target 'CMakeFiles/Graphics_project.dir/all' failed
CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/Graphics_project.dir/rule' failed
Makefile:117: recipe for target 'Graphics_project' failed
mingw32-make.exe: *** [Graphics_project] Error 2
这是我的 CMakeLists.txt 内容:
cmake_minimum_required(VERSION 3.15)
project(Graphics_project)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(SDL REQUIRED)
include_directories(${SDL_INCLUDE_DIR})
add_executable(Graphics_project main.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL_LIBRARY})
add_definitions(-DSDL_MAIN_HANDLED)
在项目文件夹的单独cmake
文件夹中,我有一个FindSDL.cmake
文件:
set(FIND_SDL_PATHS D:/Coding/Devs/SDL-devel-1.2.15-mingw32/SDL-1.2.15)
find_path(SDL_INCLUDE_DIR SDL
PATH_SUFFIXES include
PATHS ${FIND_SDL_PATHS})
find_library(SDL_LIBRARY
NAMES SDL SDLmain
PATH_SUFFIXES lib
PATHS ${FIND_SDL_PATHS})
我正在尝试编译一个简单的“Hello World”:
#include <iostream>
#include "SDL/SDL.h"
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
我会很感激一些帮助,我只是不明白它与 SDL2 库链接有何不同。