c++ - cmake 链接 glew 头文件

标签 c++ cmake glew

我正在尝试使用 CMake (v 3.10.1) 将外部库添加到我的项目

我希望库位于特定目录中,因为我希望它尽可能保持干净

我的项目结构是这样的

Project
   |
   |-- main.cpp
   |-- CMakeLists.txt (top lvl)
   |
   |-- libs/
         |
         | -- glew-1.13.0
         | -- CMakeLists.txt (lib lvl)

顶级 CMakeLists.txt

cmake_minimum_required (VERSION 2.6)
project (myproject)
add_executable(myproject main.cpp)

add_subdirectory (libs)

库 lvl CMakeList.txt

### GLEW ###

include_directories(
    glew-1.13.0/include/
)

set(GLEW_SOURCE
    glew-1.13.0/src/glew.c
)

set(GLEW_HEADERS
)

add_library( GLEW_1130 STATIC
    ${GLEW_SOURCE}
    ${GLEW_INCLUDE}
)

target_link_libraries(GLEW_1130
  ${OPENGL_LIBRARY}
  ${EXTRA_LIBS}
)

主要.cpp

#include <iostream>
#include <GL/glew.h>


int main() {

    std::cout << "Hello World" << std::endl;
    return 0;
}

<GL/glew.h> headerfile not found

我的案例中缺少什么以便我可以使用 glew 头文件?

最佳答案

include_directories 的影响不是全局的:从 libs/CMakeLists.txt 执行,它不会影响 top -level CMakeLists.txt.

您可以“附加”包含目录到库目标:

# In libs/CMakeLists.txt
target_include_directories(GLEW_1130 PUBLIC glew-1.13.0/include/)

因此进一步链接到该库作为目标:

# In CMakeLists.txt
target_link_libraries(myproject GLEW_1130)

会自动将其包含目录传播到可执行文件。

关于c++ - cmake 链接 glew 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994121/

相关文章:

qt - CMake、Qt 和 CMAKE_INCLUDE_PATH

opengl - OpenGL 文件 glew.h 和 gl.h/glu.h 之间的区别

c++ - Glew 运行时/链接器错误

mfc - 使用 CMake 制作包含 MFC 的项目

c++ - 无法在 OSX 下编译 OpenGL 项目

c++ - 测量 OpenCV FPS

c++ - 如何递归访问所有树节点

c++ - 如何在不重复的情况下随机迭代 vector 的每个元素

c++ - 在智能指针容器中添加一个项目

c++ - CMake/JOM 不能并行构建