2016-04-04 260 views
0

我想要使用CLion IDE(mingw-w64,CMake)运行一个简单的SDL应用程序。将SDL2库链接到CMake

在此question它说为了使SDL2与mingw一起工作,它将链接下列库。

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

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

此外,libSDL2lSDL2之间是否有区别? SDL提供名为libSDL2.a的库,但我经常在示例中看到它是拼写为lSDL2的。

为什么lazyfoo tutorials说你只需要lmingw32,lSDL2mainlSDL2?这是我目前在CMake链接,但我得到未定义的参考,如

SDL_windowskeyboard.c:617: undefined reference to `ImmGetIMEFileNameA' 
+0

哦,哇。我只是添加它们。这些被引用如何?它们位于Windows的什么位置? 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) – ShrimpCrackers

+0

你尝试使用'find_package(SDL)'为了你的目的?通常,使用'find_package()'方法比手动列出库更容易。 – Tsyvarev

回答

0

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

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)