C++ 如何将/usr/include中的头文件包括在我的cmake项目中?

C++ 如何将/usr/include中的头文件包括在我的cmake项目中?,c++,cmake,C++,Cmake,我一直在研究类似的、现有的堆栈溢出问题,但我仍然不清楚(这是我第一次使用cmake)。我只是想在我的cmake项目中包含/usr/include子目录中的标题,但我显然不知道我在做什么:-)我使用Bash shell和vim,因为我像Mick Jagger一样酷 这是我的CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (VoxelRPG) set (VoxelRPG_VERSION_MAJOR 0) set (Voxe

我一直在研究类似的、现有的堆栈溢出问题,但我仍然不清楚(这是我第一次使用cmake)。我只是想在我的cmake项目中包含/usr/include子目录中的标题,但我显然不知道我在做什么:-)我使用Bash shell和vim,因为我像Mick Jagger一样酷

这是我的CMakeLists.txt:

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是一行:

cmake_minimum_required (VERSION 2.8)
下面是main.cpp的标题(它显示了我要使用的标题):

但是,make操作会弹出以下错误消息:

chris@stupid:~/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

提前感谢那些帮助我的了不起的人

我想您应该使用
-L/usr/X11R6/lib-L/usr/local/lib-lGL-lGLU-lm-lglut
来添加
OpenGL
库。其次,您不需要将这些子目录添加到您的
include_目录中(或者甚至“/usr/include”,因为gcc在默认情况下应该在那里搜索)。

您有链接器错误-您需要将gl库链接到您的项目-头文件没有问题。您是对的,因为这实际上是一个关于链接的问题,这个问题是另一个问题()的重复。我要删除这个问题。实际上,我所能做的就是标记这个问题以便删除,因为它有一个答案。我在查找/usr/include/zlib.h时遇到了一个问题,即使它显然在那里。将include_目录(/usr/include)添加到CMakeLists.txt似乎没有帮助。一定是出了什么事。这只发生在我的Docker文件中,而不是在我的常规机器中。有人有线索吗?
chris@stupid:~/voxel_rpg$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/chris/voxel_rpg
chris@stupid:~/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