2013-11-26 2 views
1

나는 다음과 같은 구조의 프로젝트가 있습니다.CMake 외부 라이브러리를 찾는이

  • 소스 코드 : E : 경로가 이런 식으로 설정/프로젝트 이름 마스터를
  • 곳 바이너리를 빌드하려면 : E는 :/프로젝트 이름 마스터/소스 (1.Can 내가 다른 디렉토리를 선택하거나

다음으로 내가 선택한 항목 : 구성 -> "이 프로젝트의 생성기 지정 = Visual Studio 11, 기본 네이티브 컴파일러 사용"-이 파일을 포함하는 디렉토리로 설정해야합니다. > 마침

그런 다음 정보를 얻습니다 : 구성 프로세스의 오류, 프로젝트

이름 : CMAKE_INSTALL_PREFIX C :/프로그램 파일 (x 86)/프로젝트 이름 이름 : SFML_INCLUDE_DIR SFML_INCLUDE_DIR-NOTFOUND

파일이 잘못

CMake 구이가 포함되어 다음과 같은 정보가 될 수 있습니다

CMake Error at thirdparty/FindSFML.cmake:165 (message): 
    Could NOT find SFML (missing: SFML_SYSTEM_LIBRARY SFML_WINDOW_LIBRARY 
    SFML_AUDIO_LIBRARY SFML_NETWORK_LIBRARY SFML_GRAPHICS_LIBRARY) 
Call Stack (most recent call first): 
    CMakeLists.txt:63 (find_package) 

SFML_INCLUDE_DIR (CMake Gui에서)을 설정했습니다. C : /OpenGL/SFML-2.1/include/SFML하지만 난 여전히 그 오류가 발생합니다. 2. 그것을 고치는 방법? lib 파일과 dll은 어떻게됩니까?

EDIT1 : 나는이 프로젝트에서 official site

FindSFML.cmake에서 SFML 다운로드 는 SFML_ROOT 항목을 포함하지 않지만, SFML_INCLUDE_DIR은 다음과 같습니다

# find the SFML include directory 
find_path(SFML_INCLUDE_DIR SFML/Config.hpp 
     PATH_SUFFIXES include 
     PATHS 
     ${SFMLDIR} 
     $ENV{SFMLDIR} 
     ~/Library/Frameworks 
     /Library/Frameworks 
     /usr/local/ 
     /usr/ 
     /sw   # Fink 
     /opt/local/ # DarwinPorts 
     /opt/csw/ # Blastwave 
     /opt/) 

것은 어떻게 설정하려면 SFML_ROOT? 해당 파일에 항목 (레코드)을 추가해야합니까? 어떻게 생겼을까요?

Edit2가 : SFML (C : /OpenGL/SFML-2.1/)에 새로운 경로의 일부 FindSFML.cmake 모든

find_path(SFML_INCLUDE_DIR SFML/Config.hpp 
     PATH_SUFFIXES include 
     PATHS 
     ${SFML_ROOT} 
     $ENV{SFML_ROOT} 
     C:/OpenGL/SFML-2.1/ 
     ~/Library/Frameworks 
     /Library/Frameworks 
     /usr/local/ 
     /usr/ 
     /sw   # Fink 
     /opt/local/ # DarwinPorts 
     /opt/csw/ # Blastwave 
     /opt/) 

답변

1

우선, SFML는 CMake 표준 모듈 아니다 소스에 대한 링크를 제공하는 것이 좋을 것입니다. 나는 당신이 this product를 의미하기를 바랍니다.

# If SFML is not installed in a standard path, you can use the SFML_ROOT CMake (or environment) variable 
# to tell CMake where SFML is. 

그래서 당신은 아마 단순히 SFML_ROOT 변수를 설정할 필요가 있지만 SFML_INCLUDE_DIR 다음 FindSFML 파일에서 살펴 보자.

lib 파일과 dll 파일은 어떻게됩니까?

난이 도움이 될 수있다 생각한다

# By default, the dynamic libraries of SFML will be found. To find the static ones instead, 
# you must set the SFML_STATIC_LIBRARIES variable to TRUE before calling find_package(SFML ...). 

내가 다른 디렉토리를 선택하거나이 소스 파일이 들어있는 디렉토리로 설정해야합니다 : 시간, CPP 등

use a separate directory에 적극 추천합니다.

+0

Edit1을 참조하십시오. – Irbis

+0

SFML-Edit2 경로가있는 새로운 FindSFML.cmake를 프로젝트 위치에 추가했습니다. 이게 네가 말하는거야 ? – Irbis

+0

하지만 SFML_ROOT를 어떻게 그리고 어디에서 정의해야합니까? 나는 CMake-Gui를 사용합니다. – Irbis

관련 문제