首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake链接glew头文件

cmake链接glew头文件
EN

Stack Overflow用户
提问于 2017-12-27 14:44:58
回答 2查看 942关注 0票数 1

我试图使用CMake (v3.10.1)将外部库添加到我的项目中。

我希望lib能够生活在特定的目录中,因为我希望保持它尽可能干净。

我的项目结构是这样的

代码语言:javascript
复制
Project
   |
   |-- main.cpp
   |-- CMakeLists.txt (top lvl)
   |
   |-- libs/
         |
         | -- glew-1.13.0
         | -- CMakeLists.txt (lib lvl)

顶级lvl CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required (VERSION 2.6)
project (myproject)
add_executable(myproject main.cpp)

add_subdirectory (libs)

lvl CMakeList.txt

代码语言:javascript
复制
### 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}
)

main.cpp

代码语言:javascript
复制
#include <iostream>
#include <GL/glew.h>


int main() {

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

<GL/glew.h> headerfile not found

我在我的案例中遗漏了什么,这样我就可以使用glew头文件了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-27 14:55:37

include_directories的效果是而不是全局:在libs/CMakeLists.txt执行时,它不影响顶级CMakeLists.txt

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

代码语言:javascript
复制
# In libs/CMakeLists.txt
target_include_directories(GLEW_1130 PUBLIC glew-1.13.0/include/)

所以以那个图书馆为目标进一步链接

代码语言:javascript
复制
# In CMakeLists.txt
target_link_libraries(myproject GLEW_1130)

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

票数 2
EN

Stack Overflow用户

发布于 2017-12-27 14:58:39

不要将第三方项目放入您自己的构建系统中,否则会污染您的配置。这里一种合理的方法是在您的系统上安装GLEW,并使用find_package将其作为项目的一部分:

代码语言:javascript
复制
cmake_minimum_required (VERSION 2.6)
project (myproject)
find_package(glew 1.13.0)
add_executable(myproject main.cpp)
target_link_libraries(myproject GLEW::glew)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47994121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档