Lor*_*olt 18 glew cmake dynamic-linking
如何将GLEW链接到CMake项目?
我们一直在尝试使用CMake将GLEW链接到我们的项目至少3个小时而没有任何成功,因此可以接受任何帮助.
我正在使用CMake 3.1.0附带的FindGLEW.cmake
的CMakeLists.txt
find_package(GLEW REQUIRED)
if (GLEW_FOUND)
include_directories($(GLEW_INCLUDE_DIRS))
endif()
Run Code Online (Sandbox Code Playgroud)
环境变量

我正在使用MinGW w64来编译源代码,我们只是通过将包含和库复制到各自的文件夹来成功链接GLFW和GLM,但在使用GLEW后,CMake仍然无法找到它.
对不起,如果我在制定问题时不够清楚.我将提供所需的任何其他信息.
编辑:我已经设法通过在CMake缓存文件中指定它们的位置链接头文件,虽然我得到未定义的glew函数的引用,如glewInit().
Alb*_*rtM 22
其他答案显然有效,但基于目标的 cmake 风格使它变得更加容易,因为 GLEW find 模块定义了导入的 target GLEW::GLEW。所有你需要的是:
find_package(GLEW REQUIRED)
target_link_libraries(YourTarget GLEW::GLEW)
Run Code Online (Sandbox Code Playgroud)
YourTarget是您使用add_executable或创建的目标add_library。无需显式添加包含目录,它们是通过链接目标自动添加的。
Jon*_*y D 21
像FindGLEW这样的典型CMake脚本将定义指定项目所需路径和文件的变量.如果脚本无法自动识别正确的路径(通常是因为非标准的安装位置,这很好),那么它会将这些变量留给您填写.
使用命令行CMake,可以使用-D标志来定义和设置给定变量的值.其他CMake接口,如CMake-gui或IDE集成,可以通过其他方式为您提供此功能.
无论你这样做,你也可以直接修改缓存(CMakeCache.txt)并查看CMake在那里使用的内容,或者只是完全清除缓存.您必须重新运行CMake才能获取更改.
当谈到链接时,就需要告诉CMake链接哪些库.使用link_libraries自动脚本为您提供的命令.
find_package(GLEW REQUIRED)
if (GLEW_FOUND)
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
endif()
Run Code Online (Sandbox Code Playgroud)
秘密find_package(GLEW)是在使用cmake install的FindGLEW.cmake文件中.
find_path(GLEW_INCLUDE_DIR GL/glew.h)
find_library(GLEW_LIBRARY NAMES GLEW glew32 glew glew32s PATH_SUFFIXES lib64)
Run Code Online (Sandbox Code Playgroud)
该find_path和find_library命令查找标准系统路径的路径.如果您希望它们在用户定义的目录中查找路径,您应该告诉它们.例如:
set(CMAKE_PREFIX_PATH "d:/libs/glew-1.10.0")
set(CMAKE_LIBRARY_PATH "d:/libs/glew-1.10.0/lib/Release/Win32/")
find_package(GLEW REQUIRED)
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
31624 次 |
| 最近记录: |