c++ - Cmake 找不到包含 /libaries (SDL2, GLEW,...)
问题描述
我想在我的 Cmake 项目中包含 SDL2 和 GLEW
scr 文件位于 C:\libs\src 中,我使用 PATH CMAKE_Install_PRÄFIX 在 CMAKE 中创建了所有库,如本文档中所示:
- 下载并安装 CMake ( https://cmake.org/ ) 和 Visual Studio 社区版 ( https://visualstudio.microsoft.com/de/ )
- 创建一个目录库或库(任何适合您的),您可以在其中安装所有库。将其置于较低级别是合理的,因为将来您可能希望添加更多库并将此文件夹也用于其他项目。以下解释假设您使用C:/libs。如果您想使用另一个目录,只需按照您需要的方式调整目录即可。
- 将C:/libs和C:/libs/bin添加到环境变量路径( https://www.computerhope.com/issues/ch000549.htm )。
- 创建一个子目录libs/src,将cgAdvancedFramework/deps/中的所有库复制到此文件夹并解压缩它们。
- SDL2:
- 打开 cmake-gui
- 源代码:C:/libs/src/SDL2-2.0.12
- 二进制文件:C:/libs/src/SDL2-2.0.12/build
- 添加条目
- 名称:CMAKE_INSTALL_PREFIX
- 类型:路径
- 值:C:\libs
- 好的
- 配置
- 接受创建构建目录
- 使用默认的本机编译器 --> 完成
- 产生
- 打开项目(这应该启动 Visual Studio)
- 视觉工作室
- 解决方案配置:调试
- 右键ALL_BUILD --> Build(如果出现错误,这里可能你之前做错了)
- 右键单击安装 --> 构建(如果出现错误,...)
- 对解决方案配置执行相同操作:RelWithDebInfo(可选但推荐)
- 打开 cmake-gui
我的项目位于 C:\Users\Documents...\dvs\volren
并且构建目录位于 C:\Users\Documents...\dvs\build 和
C:\libs\include\GL
C:\libs\include\SDL2 ...
主.cpp:
#include <iostream>
#pragma once
#define NOMINMAX
#include <SDL2.h> //dont find
#include <GL/glew.h> //dont find
#include <vtk3DS.h> // find
CMakelist.txt:
cmake_minimum_required(VERSION 2.8)
PROJECT(volren)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
add_executable(volren MACOSX_BUNDLE main.cpp Camera.hpp Math.hpp Image.hpp)
target_link_libraries(volren ${VTK_LIBRARIES} ${GLEW_LIBRARIES} ${VTK_LIBRARIES})
错误:无法打开源文件 GL/glew.h
我的错误在哪里?
解决方案
看来您在 Windows 上,为什么要添加MACOSX_BUNDLE
您的add_executable
?
GLEW_INCLUDE_DIRS
另外,您确定SDL2_INCLUDE_DIRS
要使用正确的变量吗?你检查他们是否有人居住吗?
推荐阅读
- python - 为什么 fortran child 在生成时会导致 mpi4py 错误?
- angular - 单击按钮时过滤Angular中的数据
- github - 语言学家文档在 github 中不起作用?
- c++ - 超过二分图问题的时间限制
- azure-sql-database - 从 Javascript 对象到 CSV 到 Azure SQL 的正确文本编码管道
- php - 使用 PHP 和 xpath 从 html 源获取下一个兄弟
- html - 如何在 html 页面中嵌入 Word 文件?
- git - 如何只推送git的一些分支
- reactjs - 使用已在 render 中定义的变量,在 return 中使用它
- laravel - 在 null 上调用成员函数 toArray()