经过数小时的在网上和SO上寻找解决方案后,我陷入了僵局。迄今为止,任何方法都没有对我起作用......
我正在使用CLion IDE(基于CMake),在Windows系统上工作。我的目标是将SDL2正确地链接到我的项目中,并通过
以下是需要注意的事项:CMakeLists.txt文件的格式
SDL2的MingW开发库应该放置在哪个目录下
我可能需要设置的Windows环境变量要求
我的CMakeLists.txt看起来像这样:
我正在使用CLion IDE(基于CMake),在Windows系统上工作。我的目标是将SDL2正确地链接到我的项目中,并通过
#include "SDL.h"
的方式使用它。以下是需要注意的事项:
cmake_minimum_required(VERSION 3.6)
project(sdl2Project)
set(CMAKE_CXX_STANDARD 11)
#This is where sdl2-config.cmake is located
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32/lib/cmake/SDL2")
set(SOURCE_FILES main.cpp)
add_executable(sdl2Project ${SOURCE_FILES})
find_package(sdl2 REQUIRED)
target_include_directories(sdl2Project PUBLIC ${SDL2_INCLUDE_DIRS})
target_link_libraries(sdl2Project ${SDL2_LIBRARIES})
没有使用FindSDL2.cmake
文件。
我从libsdl.org
下载的SDL2
库位于:C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32
我没有使用CMake的经验,因此无法真正理解问题根源。为了正确找到库并正确链接它,我需要采取哪些步骤??
编辑:
我的项目结构如下:
sdl2Project
cmake-build-debug
CMakeLists.txt
main.cpp
sdl2-config.cmake
文件:C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32/lib/cmake/SDL2
- PentaKontarget_link_libraries(sdl2Project ${SDL2_LIBRARY})
。 - Shmuel H.FindSDL2.cmake
,您会发现它使用的是SDL2_LIBRARY
而不是LIBRARIES
。从头开始重新制作项目后,只需要进行两个更改:set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:/Users/KPentaris/C Projects/Libraries/SDL2-2.0.5/x86_64-w64-mingw32")
target_link_libraries
中将项目名称从SDL2
更改为sdl2Project
(或者您的项目名称)。FindSDL2.cmake
:删除它,清理你的构建目录,做出适当的更改并重新配置。FindSDL2.cmake
可能今天可以工作,但你只是幸运的:你不能确定当你改变你的 SDL 版本时,即使是一个小版本,它将来会起作用。你应该使用源代码提供的包。而且CMAKE_PREFIX_PATH
应该填写为C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32/lib/cmake/SDL2
。 - rocambille