2014-06-06 2 views
1

GLake (OpenGL)로 작업하는 CMake에 문제가 있습니다.CMake : GLFW 프로젝트에서 헤더를 찾는 중 오류가 발생했습니다.

내 CMakeList.txt 파일은 다음과 같다 :

cmake_minimum_required(VERSION 2.6) 

project(test) 

set(SRC Test.cpp) 
add_executable(test ${SRC}) 

find_package(OpenGL REQUIRED) 
find_package(GLEW REQUIRED) 
find_package(PkgConfig REQUIRED) 
pkg_search_module(GLFW REQUIRED glfw3) 
find_package(GLEW REQUIRED) 

include_directories(${OPENGL_INCLUDE_DIRS}) 
include_directories(${GLEW_INCLUDE_DIRS}) 
include_directories(${GLFW_INLUDE_DIRS}) 

target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES}) 
target_link_libraries(${PROJECT_NAME} glew32 ${GLEW_LIBRARIES}) 
target_link_libraries(${PROJECT_NAME} glfw3 ${GLFW_LIBRARIES}) 

난이 CMake 스크립트를 실행하는 동안 오류를 얻을하지 않습니다하지만 내가 할 실행할 때 항상이 오류를 얻을 :

fatal error: <GLFW/glfw3.h: No such file or directory compilation terminated. 

나는 모든 것을 시도했지만이 파일을 찾지 못한 이유를 모르겠습니다.

답변

0

출력을 더 많이 표시하려면 make를 사용할 수 있습니다.

그래서 나는 당신이

make VERBOSE=1 

를 실행하고 -I 플래그 컴파일러 인수로 사용되고 있는지를 참조하는 것이 좋습니다.

또한 나는

pkg_search_module(SOMETHING ..) 

이 다른 사람과 같이 사용하고있는 것으로 나타났습니다 :

pkg_search_module(SOMETHING ..) 
if (SOMETHING_FOUND) 
    include_directories(${SOMETHING_INCLUDE_DIRS}) 
else (SOMETHING_FOUND) 
    PkgError_Later("Could not find SOMETHING (pkg name: lib-dev)") 
endif (SOMETHING_FOUND) 
+0

힌트를 가져 주셔서 감사합니다. 이제는 내 CMakeLists.txt 파일에 다음 줄을 추가했습니다 :'find_package (PkgConfig REQUIRED) pkg_search_module (GLFW REQUIRED glfw3) (GLFW_FOUND)'cmake는 여전히 불평하지 않지만 make를 실행하는 동안 여전히 같은 오류가 발생합니다. include_directories ($ {GLFW_INLUDE_DIRS}) else (GLFW_FOUND) 메시지 ("GLFW (패키지 이름 : lib-dev)를 찾을 수 없습니다") endif (GLFW_FOUND) – user3212261

0

먼저 오타를 수정해야 GLFW_INLUDE_DIRS 라인 :

include_directories(${GLFW_INLUDE_DIRS}) 

하는 경우 그건 당신의 문제를 해결하지 못합니다, 여기에 최소 CMakeLi입니다 sts.txt는 나를 위해 작동합니다. PkgConfig을 사용하지 않습니다.

cmake_minimum_required(VERSION 2.8)           
project(GLFW-hello-world)              

find_package(OpenGL REQUIRED)             
include_directories(${OPENGL_INCLUDE_DIR})         

if(DEFINED ENV{GLFW_INSTALL_DIR})            
    find_package(glfw3 3.2 REQUIRED PATHS $ENV{GLFW_INSTALL_DIR})    
    get_filename_component(GLFW_BASE $ENV{GLFW_INSTALL_DIR} ABSOLUTE)   
    include_directories("${GLFW_BASE}/include")        
else()                  
    message("GLFW_INSTALL_DIR not set, searching in default location(s)")  
    find_package(glfw3 3.2 REQUIRED)           
endif(DEFINED ENV{GLFW_INSTALL_DIR})           

add_executable(main main.c)             
target_link_libraries(main ${OPENGL_LIBRARIES})        
target_link_libraries(main glfw)     
의 main.c가 this page의 예시적인 코드가

및 GLFW 공유 라이브러리 (-DBUILD_SHARED_LIBS=ON)으로 컴파일

if의 제 1 분기는 GLFW 로컬 컴파일 설치 한 경우에 인 (environnement 변수 GLFW_INSTALL_DIR은 설치 디렉토리로 설정해야합니다.) 두 번째는 GLFW가 기본 위치에 설치된 경우입니다 (첫 번째 경우 만 테스트했습니다).

관련 문제