나는 기존의 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
사전에 감사 도와 멋진 사람!
링커 오류가 있습니다. gl 라이브러리를 프로젝트에 연결해야합니다. 헤더 파일에는 아무런 문제가 없습니다. –
당신 말이 맞습니다. 실제로 이것은 링크에 관한 질문이기 때문에이 질문은 다른 질문과 중복됩니다 (http://stackoverflow.com/questions/14077611/how-do-i-tell-cmake-to- static-in-the-source-directory에있는 link-in-a-static-library). 이 질문을 삭제하겠습니다. – orb
사실 내가 할 수있는 것은 대답이 있기 때문에 삭제를 위해 플래그를 지정하는 것입니다. – orb