c++ - 如何让 CMake 在 Windows 上找到 freeglut?
问题描述
我在 Windows 上工作,我想在 CMake 中创建一个独立于操作系统的项目。我也想将 OpenGL 与 freeglut 一起使用。
到目前为止,我的CMakeLists.txt看起来像这样:
project (visualizer)
set(GLUT_INCLUDE_DIR "C:/Program Files (x86)/freeglut/include")
set(OPENGL_LIBRARY_DIR "C:/Program Files (x86)/freeglut/lib")
# GLUT
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
if(NOT GLUT_FOUND)
message(ERROR "GLUT not found!")
endif(NOT GLUT_FOUND)
# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
if(NOT OPENGL_FOUND)
message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)
add_executable(visu visualizer.cpp)
target_link_libraries(visu ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})
我必须明确定义 and 的路径GLUT_INCLUDE_DIR
,OPENGL_LIBRARY_DIR
否则 cmake 会给我这个错误:
CMake 错误:/Program Files/CMake/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:137(消息):找不到 GLUT(缺少:GLUT_INCLUDE_DIR)
据我所知,这应该由findglut.cmake
. 我的意思是,我没有专业知识来找出它会在哪里搜索 lib,但我认为这部分findglut.cmake
应该这样做:
if (WIN32)
find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
PATHS ${GLUT_ROOT_PATH}/include )
find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Release
)
find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Debug
)
mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
select_library_configurations(GLUT_glut)
else ()
我的实际问题是:我应该将 freeglut 文件放在哪里,以便 CMake 无需任何额外努力就能找到它们?
解决方案
推荐阅读
- javascript - 如何将 Django-Template 变量发送到 Morris.Line 数据变量?
- condor - 如何帮助 condor 找到它应该在作业中执行的文件?
- python - 检查 GROUP BY 和列之间的值
- r - 在 R 中使用 reshape 将数据框从长更改为宽。未定义的列错误
- javascript - 如何定期重新渲染反应组件
- c# - C# Selenium 4:设置请求拦截
- kotlin - 从泛型类型参数中删除可空性
- html - 与模块冲突 - 带类的 div 消失
- javascript - 在 ejs/express 中调用 setInterval() 并查询 db
- python - 使用 NSTask 在 Objective C 中运行 SH 脚本比从 Terminator 直接执行脚本慢