经过几个小时的网络淘洗和SO的解决方案,我处于停滞状态。到目前为止,对我来说没有任何工作......
我在Windows上使用使用CMake的CLion IDE。我的目标是正确地将SDL2
链接到我的项目,并通过#include "SDL.h"
使用它,这是正确的方法。
CMakeLists.txt
文件MingW development library
我的CMakeLists.txt看起来像这样:
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
个文件。
我从SDL2
下载的libsdl.org
库位于:
C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32
我没有使用CMake的经验,所以我无法真正理解问题的根源。我需要采取哪些步骤才能找到库并正确链接?
修改
我的项目结构如下:
sdl2Project
cmake-build-debug
CMakeLists.txt
main.cpp
答案 0 :(得分:2)
查看FindSDL2.cmake
,您需要提供有关库安装位置的提示。您可以通过设置环境变量SDLDIR
来完成此操作,但您不应该这样做。一般建议:您不应该使用未经过您使用的资源提供的CMake软件包。
查看sources of SDL2
,根目录包含一个文件sdl2-config.cmake.in
,该文件应该已作为sdl2-config.cmake
配置并安装在您的安装目录中:这是您应该使用的包文件
我是否正确地猜测文件C:/Users/MyUserName/CLibraries/SDL2-2.0.5/sdl2-config.cmake
是否存在?
如果是,要允许CMake找到它,请在致电CMAKE_PREFIX_PATH
之前将您的安装目录添加到find_package
:
set(CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH}
"C:/Users/MyUserName/CLibraries/SDL2-2.0.5"
)
find_package(sdl2 REQUIRED)
注意使用" /"在路径而不是" \"这可以解释为逃避角色。仅当路径包含空格时,才需要路径周围的引号。
修改强>
此外,您误用了target_link_libraries
错误的目标:SDL2
您没有在项目中构建,而不是sdl2Project
。
您还使用了错误的变量:SDL2_LIBRARY
而不是SDL2_LIBRARIES
;您可以通过查看sdl2-config.cmake
来查看好的变量名称。
您可以考虑使用target_include_directories
而不是include_directories
,但您使用的变量名称是错误的:SDL2_INCLUDE_DIR
而不是SDL2_INCLUDE_DIRS
。
尝试:
target_include_directories(sdl2Project PUBLIC ${SDL2_INCLUDE_DIRS})
target_link_libraries(sdl2Project ${SDL2_LIBRARIES})