将 SDL2 库与 CMake 链接

Linking SDL2 libraries with CMake

我正在尝试使用 CLion IDE(mingw-w64、CMake)获得一个简单的 SDL 应用程序 运行。

在这个 question 中它说 link 以下库是为了让 SDL2 与 mingw 一起工作。

-lmingw32 -lSDL2main -lSDL2 -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid

我知道前 3 个是什么以及如何使用 CMake 查找和 link 它们。我不知道如何包含其余库,因为我不知道它们位于何处或如何访问它们。

另外,libSDL2lSDL2有区别吗? SDL 提供了名为 libSDL2.a 的库,但我总是在示例中看到它拼写为 lSDL2.

为什么 lazyfoo tutorials 说您只需要 lmingw32lSDL2mainlSDL2?这就是我目前在 CMake 中 linking 的内容,但是我得到了对

之类的未定义引用
SDL_windowskeyboard.c:617: undefined reference to `ImmGetIMEFileNameA'

解决方案是按原样添加库。我的例子是:

target_link_libraries(Dark_Knights ${MINGW32_LIBRARY} ${SDL_MAIN_LIBRARY} ${SDL_LIBRARY} -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid)