【问题标题】:Linking SDL2 libraries with CMake将 SDL2 库与 CMake 链接
【发布时间】:2016-04-04 07:06:54
【问题描述】:

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

在这个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 说您只需要lmingw32lSDL2mainlSDL2?这是我目前在 CMake 中链接的内容,但我得到了对诸如

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

【问题讨论】:

  • 哦,哇。我只是按原样添加它们。这些是如何被引用的?它们位于 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)
  • 您是否尝试将find_package(SDL) 用于您的目的?通常,使用find_package() 的方法比手动列出库更容易。

标签: cmake sdl-2 mingw-w64


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多