make find_package(OpenGL REQUIRED)失败,没有任何错误消息
cmake find_package(OpenGL REQUIRED) failed without any error message
我试图使用cmake (Windows10 + VS2010)找到OpenGL,我使用了以下代码:
find_package(OpenGL REQUIRED)
message(STATUS "OpenGL_FOUND:= ${OpenGL_FOUND}")
if(OpenGL_FOUND)
message('OpenGL_FOUND-is-true')
else(OpenGL_FOUND)
message('OpenGL_FOUND-is-false')
endif(OpenGL_FOUND)
message(STATUS "OPENGL_INCLUDE_DIR:= ${OPENGL_INCLUDE_DIR}")
message(STATUS "OPENGL_LIBRARY:= ${OPENGL_LIBRARY}")
message(STATUS "OPENGL_LIBRARIES:= ${OPENGL_LIBRARIES}")
输出为:
OpenGL_FOUND:=
'OpenGL_FOUND-is-false'
OPENGL_INCLUDE_DIR:=
OPENGL_LIBRARY:= glu32;opengl32
OPENGL_LIBRARIES:= glu32;opengl32
arg REQUIRED
在find_package不生效,为什么?
查看文档,意外的是,变量不是OpenGL_FOUND
,而是OPENGL_FOUND
。我猜你会得到更符合以下内容的内容:
find_package(OpenGL REQUIRED)
message(STATUS "OPENGL_FOUND:= ${OPENGL_FOUND}")
if(OPENGL_FOUND)
message('OPENGL_FOUND-is-true')
else()
message('OPENGL_FOUND-is-false')
endif()
message(STATUS "OPENGL_INCLUDE_DIR:= ${OPENGL_INCLUDE_DIR}")
message(STATUS "OPENGL_LIBRARY:= ${OPENGL_LIBRARY}")
message(STATUS "OPENGL_LIBRARIES:= ${OPENGL_LIBRARIES}")
add_executable(foo main.cpp)
target_include_directories(foo PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(foo ${OPENGL_LIBRARIES})
查看源代码,OPENGL_INCLUDE_DIR
没有在Windows上设置,除了cygwin,并且在您的情况下确实应该为空。
注意,在else()
和endif()
中重复条件是可选的。
真正的答案是这部分https://cmake.org/cmake/help/latest/command/find_package.html:
在Module模式下,加载的find模块负责执行由这些变量详细说明的请求;详细信息请参见find模块。
你可以说这是FindOpenGL中的一个bug。cmake模块。或者,find_package
要求每个模块都应该处理相同的事情,也可以被认为是一个bug。或者他们没有任何适当的流程来只发布满足这些需求的模块。
相关文章:
- boost::进程间消息队列引发错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- nng to pynng pub/sub. 客户端未收到任何消息
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- 如果我在 Xbox UWP 应用程序上收到激活错误并且错误消息中没有任何有用的内容,该怎么办
- 按下Enter时如何输入错误消息,但没有给出任何答案
- ROS2 COLCON构建未在Windows中显示任何错误消息
- 任何人都有任何想法编写与C 旧手机中的消息作曲家以相同方式工作的程序
- 套接字记录未读取任何消息
- 为什么GetMessage在不发送任何消息的情况下退出我的程序
- 是否有任何消息总是出现在WM_LBUTTONDOWN和WM_LBUTTNUP之间
- 在C 中解析二进制消息.任何有示例的lib
- dllimport将一个c++方法移植到c#.当从C#调用时,程序关闭,没有任何错误消息
- 是否有任何方法可以将 Dbgprint () 消息存储到文件中
- 程序崩溃并显示消息"terminate called recursively"而不引发任何异常
- make find_package(OpenGL REQUIRED)失败,没有任何错误消息
- ICMPv6 -不能读取任何路由器通告消息
- c++ Windows没有得到任何消息
- 消息传递系统:回调可以是任何东西