cmake link glew 头文件
cmake link glew header file
我正在尝试使用 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)
库等级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}
)
main.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
开始执行,它不影响 顶级 CMakeLists.txt
.
您可以 "attach" 将目录包含到库中 target:
# In libs/CMakeLists.txt
target_include_directories(GLEW_1130 PUBLIC glew-1.13.0/include/)
进一步与该库链接为 target:
# In CMakeLists.txt
target_link_libraries(myproject GLEW_1130)
会自动将其包含目录传播到可执行文件。
不要add_subdirectory
第三方项目进入你自己的构建系统,否则会污染你的配置。一种合理的方法是在您的系统上安装 GLEW,并使用 find_package
将其作为项目的一部分包含在内:
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)
我正在尝试使用 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)
库等级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}
)
main.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
开始执行,它不影响 顶级 CMakeLists.txt
.
您可以 "attach" 将目录包含到库中 target:
# In libs/CMakeLists.txt
target_include_directories(GLEW_1130 PUBLIC glew-1.13.0/include/)
进一步与该库链接为 target:
# In CMakeLists.txt
target_link_libraries(myproject GLEW_1130)
会自动将其包含目录传播到可执行文件。
不要add_subdirectory
第三方项目进入你自己的构建系统,否则会污染你的配置。一种合理的方法是在您的系统上安装 GLEW,并使用 find_package
将其作为项目的一部分包含在内:
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)