2016-11-29 888 views
1

经过几个小时的网络搜索和SO解决方案后,我处于停滞状态。目前为止我没有任何工作...在CLion中使用SDL2和CMake

我在Windows上,使用使用CMake的CLion IDE。我的目标是将SDL2正确链接到我的项目,并通过#include "SDL.h"正确地连接它。

  • CMakeLists.txt文件的格式
  • 就在那里我应该把SDL2
  • MingW development library
  • 目录对于具体细节,我可能需要设置窗口ENV变量的任何要求。

我的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的没有经验,所以我无法真正了解问题出在哪里源于。我需要采取哪些步骤才能找到库并将其正确链接?

编辑:

我的项目结构如下:在您的FindSDL2.cmake

sdl2Project 
    cmake-build-debug 
    CMakeLists.txt 
    main.cpp 

回答

1

看,你需要提供一个提示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) 

注意使用“/”的路径,而不是“\”,这可能是解释为逃避角色。只有当路径包含空白时,路径中的引号才是必需的。

编辑:SDL2,你不要在你的项目构建,而不是sdl2Project,:

而且,你用错了目标滥用target_link_libraries

您还使用了一个错误的变量: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}) 
+1

有下'SDL2-config.cmake': 'C:/Users/MyUserName/CLibraries/SDL2-2.0.5/x86_64-w64-mingw32/lib/ cmake/SDL2' – Konstantine

+0

然后用它与我建议的解决方案;) – wasthishelpful

+0

它给我以下错误: CMakeLists.txt CMake错误:18(target_link_libraries): 无法为目标“SDL2”指定链接库由此 项目构建。' 注:第18行是“target_link_libraries”通讯和 – Konstantine