2013-11-21 3 views
0

나는 기존의 Stack Overflow 관련 질문을 샅샅이 뒤졌지만 여전히 단서가 없다. (이것은 처음 cmake를 사용하는 것이다.) 나는 단순히 cmake 프로젝트의/usr/include 하위 디렉토리에있는 헤더를 포함하고자하지만 분명히 내가 뭘하고 있는지 전혀 알지 못한다. 나는 Bick 쉘과 vim을 사용하고있다. 왜냐하면 나는 Mick Jagger와 같이 멋지 기 때문이다.내 cmake 프로젝트에/usr/include의 헤더 파일을 포함시키는 방법은 무엇입니까?

cmake_minimum_required (VERSION 2.8) 

project (VoxelRPG) 

set (VoxelRPG_VERSION_MAJOR 0) 
set (VoxelRPG_VERSION_MINOR 1) 

configure_file (
     "${PROJECT_SOURCE_DIR}/src/VoxelRPG.h.in" 
     "${PROJECT_SOURCE_DIR}/src/VoxelRPG.h" 
) 

subdirs(src) 

include_directories("/usr/include" "/usr/include/GL" "/usr/include/glm" "/usr/include/glm/gtc" "${PROJECT_SOURCE_DIR}/src") 

set(HEADER_FILES "/usr/include/GL/glew.h" "/usr/include/GL/glfw.h" "/usr/include/glm/glm.hpp" "/usr/include/glm/gtc/matrix_transform.hpp") 

add_executable(voxel_rpg src/main.cpp ${HEADER_FILES}) 

src 디렉토리의 CMakeLists.txt 한 줄입니다 : 여기

내 CMakeLists.txt입니다 여기에
cmake_minimum_required (VERSION 2.8) 

이 MAIN.CPP의 머리 (그것은 헤더를 보여줍니다 나는) 사용하려면 :

// Include GLEW 
#include <GL/glew.h> 

// Include GLFW 
#include <GL/glfw.h> 

// Include GLM 
#include <glm/glm.hpp> 
#include <glm/gtc/matrix_transform.hpp> 
using namespace glm; 

#include "shader.hpp" 
#include "texture.hpp" 

cmake 작업이 오류가 발생하지 않습니다

[email protected]:~/voxel_rpg$ cmake . 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /home/chris/voxel_rpg 

그러나, 메이크업 작업이 오류 메시지를 뱉어 :

[email protected]:~/voxel_rpg$ make 
Linking CXX executable voxel_rpg 
CMakeFiles/voxel_rpg.dir/src/main.cpp.o: In function `main': 
main.cpp:(.text+0x16): undefined reference to `glfwInit' 
main.cpp:(.text+0x62): undefined reference to `glfwOpenWindowHint' 
main.cpp:(.text+0x76): undefined reference to `glfwOpenWindowHint' 
main.cpp:(.text+0x8a): undefined reference to `glfwOpenWindowHint' 
main.cpp:(.text+0x9e): undefined reference to `glfwOpenWindowHint' 
main.cpp:(.text+0xea): undefined reference to `glfwOpenWindow' 
main.cpp:(.text+0x11d): undefined reference to `glfwTerminate' 
main.cpp:(.text+0x12d): undefined reference to `glewExperimental' 
main.cpp:(.text+0x133): undefined reference to `glewInit' 
main.cpp:(.text+0x177): undefined reference to `glfwSetWindowTitle' 
main.cpp:(.text+0x183): undefined reference to `glfwEnable' 
main.cpp:(.text+0x1ab): undefined reference to `glClearColor' 
main.cpp:(.text+0x1b7): undefined reference to `glEnable' 
main.cpp:(.text+0x1c3): undefined reference to `glDepthFunc' 
main.cpp:(.text+0x1c8): undefined reference to `__glewGenVertexArrays' 
main.cpp:(.text+0x1e0): undefined reference to `__glewBindVertexArray' 
main.cpp:(.text+0x1ff): undefined reference to `LoadShaders(char const*, char const*)' 
main.cpp:(.text+0x20a): undefined reference to `__glewGetUniformLocation' 
main.cpp:(.text+0x408): undefined reference to `loadDDS(char const*)' 
main.cpp:(.text+0x413): undefined reference to `__glewGetUniformLocation' 
main.cpp:(.text+0x431): undefined reference to `__glewGenBuffers' 
main.cpp:(.text+0x449): undefined reference to `__glewBindBuffer' 
main.cpp:(.text+0x461): undefined reference to `__glewBufferData' 
main.cpp:(.text+0x487): undefined reference to `__glewGenBuffers' 
main.cpp:(.text+0x49f): undefined reference to `__glewBindBuffer' 
main.cpp:(.text+0x4b7): undefined reference to `__glewBufferData' 
main.cpp:(.text+0x4e4): undefined reference to `glClear' 
main.cpp:(.text+0x4e9): undefined reference to `__glewUseProgram' 
main.cpp:(.text+0x4fa): undefined reference to `__glewUniformMatrix4fv' 
main.cpp:(.text+0x546): undefined reference to `__glewActiveTexture' 
main.cpp:(.text+0x565): undefined reference to `glBindTexture' 
main.cpp:(.text+0x56a): undefined reference to `__glewUniform1i' 
main.cpp:(.text+0x582): undefined reference to `__glewEnableVertexAttribArray' 
main.cpp:(.text+0x590): undefined reference to `__glewBindBuffer' 
main.cpp:(.text+0x5a8): undefined reference to `__glewVertexAttribPointer' 
main.cpp:(.text+0x5de): undefined reference to `__glewEnableVertexAttribArray' 
main.cpp:(.text+0x5ec): undefined reference to `__glewBindBuffer' 
main.cpp:(.text+0x604): undefined reference to `__glewVertexAttribPointer' 
main.cpp:(.text+0x651): undefined reference to `glDrawArrays' 
main.cpp:(.text+0x656): undefined reference to `__glewDisableVertexAttribArray' 
main.cpp:(.text+0x664): undefined reference to `__glewDisableVertexAttribArray' 
main.cpp:(.text+0x672): undefined reference to `glfwSwapBuffers' 
main.cpp:(.text+0x67e): undefined reference to `glfwGetKey' 
main.cpp:(.text+0x68f): undefined reference to `glfwGetWindowParam' 
main.cpp:(.text+0x6ac): undefined reference to `__glewDeleteBuffers' 
main.cpp:(.text+0x6c4): undefined reference to `__glewDeleteBuffers' 
main.cpp:(.text+0x6dc): undefined reference to `__glewDeleteProgram' 
main.cpp:(.text+0x6fd): undefined reference to `glDeleteTextures' 
main.cpp:(.text+0x702): undefined reference to `__glewDeleteVertexArrays' 
main.cpp:(.text+0x71a): undefined reference to `glfwTerminate' 
collect2: error: ld returned 1 exit status 
make[2]: *** [voxel_rpg] Error 1 
make[1]: *** [CMakeFiles/voxel_rpg.dir/all] Error 2 
make: *** [all] Error 2 

사전에 감사 도와 멋진 사람!

+2

링커 오류가 있습니다. gl 라이브러리를 프로젝트에 연결해야합니다. 헤더 파일에는 아무런 문제가 없습니다. –

+0

당신 말이 맞습니다. 실제로 이것은 링크에 관한 질문이기 때문에이 질문은 다른 질문과 중복됩니다 (http://stackoverflow.com/questions/14077611/how-do-i-tell-cmake-to- static-in-the-source-directory에있는 link-in-a-static-library). 이 질문을 삭제하겠습니다. – orb

+0

사실 내가 할 수있는 것은 대답이 있기 때문에 삭제를 위해 플래그를 지정하는 것입니다. – orb

답변

1

OpenGL 라이브러리를 추가하려면 -L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lm -lglut을 사용하고 싶습니다. 둘째로, 서브 디렉토리를 include_directories (또는 '/ usr/include'에 gcc가 기본적으로 검색해야하므로)에 추가 할 필요가 없습니다.

+0

분명히 /usr/include/zlib.h 파일을 찾는데 문제가 있습니다. include_directory (/ usr/include)를 CMakeLists.txt에 추가하는 것은 도움이되지 않습니다. 뭔가 다른 것이 틀림 없습니다. 이것은 내 Docker 파일에서만 발생하지만 내 일반 컴퓨터에서는 발생하지 않습니다. 누구나 단서가 있니? –

관련 문제