2016-11-29 212 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