2016-04-04 492 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)