2017-02-04 5 views
1

C++ 초보자, 여기 CLion (Win 10) 용 SFML 라이브러리를 구현하려고합니다.cmake 용 sfml 라이브러리가 누락되었습니다.

나는 http://www.sfml-dev.org/tutorials/2.0/compile-with-cmake.php 지침을 따르고 cmake gui와 mingw를 사용하여 sfml을 설치했습니다.

가 지금은 CMakeLists.txt

cmake_minimum_required(VERSION 3.6) 
project(untitled2) 
set(CMAKE_CXX_STANDARD 11) 

set(SOURCE_FILES main.cpp) 
add_executable(untitled2 ${SOURCE_FILES}) 

set(CMAKE_MODULE_PATH "C:/Program Files (x86)/SFML/cmake/Modules"${CMAKE_MODULE_PATH}) 

set(SFML_STATIC_LIBRARIES TRUE) 
find_package(SFML COMPONENTS graphics window system REQUIRED) 
include_directories(${SFML_INCLUDE_DIR}) 
target_link_libraries(First ${SFML_Libraries}) 

Howewer에 프로젝트 SMF 라이브러리를 포함 할 때, 나는 오류

CMake Error at C:/Program Files (x86)/SFML/cmake/Modules/FindSFML.cmake:355 (message): 
    SFML found but some of its dependencies are missing (FreeType libjpeg) 
Call Stack (most recent call first): 
CMakeLists.txt:13 (find_package) 

받고 있어요 그러나 나는 그 libs와는 윈도우에 포함되어 생각했다. 내가 뭔가 잘못하고 있는거야? FreeType과 libjpeg 파일을 어디에서 다운로드해야합니까?

답변

0

CMakeLists.txt에 경로와 같은 로컬 시스템 특정 항목을 설정하면 안됩니다. 이것은 빌드 시스템의 전체 목적을 무효화시킵니다.

먼저 프로젝트에 하위 디렉토리 "cmake"를 만들고 거기에 SFML의 FindSFML.cmake 모듈을 복사하는 것이 좋습니다.

그런 다음 CMAKE_MODULE_PATH 따라 업데이트 :

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 

이 모듈이 발견 보장합니다. CMake의 기본 모듈은 항상 발견되며 변수의 이전 값을 유지할 필요가 없습니다 (일반적으로 어쨌든 비어 있어야 함).

다음, 실제 프로젝트 파일을 생성 할 때, 당신은 단지 예를 들어, CMake에 SFML_ROOT을 통과해야합니다

: 유사한 방법으로

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" path/to/source 

, 당신이 당신의 CMakeLists.txtSFML_STATIC_LIBRARIES를 설정 안하면 않는 한 어떻게 든 정적 라이브러리를 사용해야했습니다. 그래서 실제로뿐만 아니라 명령 줄 것을 추가 할 것 :

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" -DSFML_STATIC_LIBRARIES=TRUE path/to/source 

당신은 한 번만 이러한 설정해야합니다, 그들은 나중에 CMakeCache.txt 파일에 저장됩니다. 당신이 SFML 정적 연결을 지원하려는 경우

적어도 마지막으로, 당신은뿐만 아니라 SFML의 종속성을 연결해야합니다 : 모든 오류를 수정하지 않습니다

target_link_libraries(First ${SFML_LIBRARIES} ${SFML_DEPENDENCIES}) 

주 당신이 받고있는 메시지. SFML의 사전 빌드 된 종속성은 어떤 이유로 인해 C:\Program Files (x86)\SFML\lib에 없습니다. 패키지가 미리 만들어져 있습니까?