Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何知道CMakeLists的库变量名?_C++_Opengl_Cmake - Fatal编程技术网

C++ 如何知道CMakeLists的库变量名?

C++ 如何知道CMakeLists的库变量名?,c++,opengl,cmake,C++,Opengl,Cmake,当使用CmakeList编译OpenGL项目时,我有以下行链接glut和gl: target_link_libraries(my_exe ${OPENGL_gl_LIBRARY} ${GLUT_LIBRARIES}) 我查看了如何将glut和gl与CMake链接,这样我就可以使用${OPENGL\u gl\u LIBRARY}和${glut\u LIBRARIES}。但是我怎么知道要使用的变量呢?我习惯于只做${THELIBRARY\u LIBRARES},但在gl的情况下,它变为将“gl”添

当使用CmakeList编译OpenGL项目时,我有以下行链接glut和gl:

target_link_libraries(my_exe ${OPENGL_gl_LIBRARY} ${GLUT_LIBRARIES})

我查看了如何将glut和gl与CMake链接,这样我就可以使用${OPENGL\u gl\u LIBRARY}和${glut\u LIBRARIES}。但是我怎么知道要使用的变量呢?我习惯于只做${THELIBRARY\u LIBRARES},但在gl的情况下,它变为将“gl”添加到变量名中。如果不在谷歌上搜索(我想使用的任何库),我怎么知道呢?

你不知道。它取决于库的“查找”模块


在“编写查找模块”下,您可以看到在模块中设置了变量。检查cmake模块目录中的
FindOpenGL.cmake
模块时,您将看到变量的名称。

这些变量是通过
find_package(XXX)
调用获得的

这些调用会从库重定向到
FindXXX.cmake
脚本(与cmake一起提供或包含在使用它的项目中)或
XXXConfig.cmake
脚本(与库本身一起提供)

所以,为了确定有意义变量的名称,您需要参考适当的脚本。通常,脚本的接口(输入-输出变量)在脚本开头的注释中描述


可以读入cmake附带的
FindXXX.cmake
脚本的文档。

除了查阅find模块的文档外,还可以使用cmake的属性为您提供调用定义的变量

例如,以下代码:

cmake_minimum_required(VERSION 3.2)

project(FindPackageVars)

get_directory_property(_vars_before VARIABLES)
find_package(OpenGL)
get_directory_property(_vars VARIABLES)

list(REMOVE_ITEM _vars _vars_before ${_vars_before})
foreach(_var IN LISTS _vars)
    message(STATUS "${_var} = ${${_var}}")
endforeach()
我的机器上的输出:

--找到OpenGL:/usr/lib/x86_64-linux-gnu/libGL.so
--查找\u PACKAGE\u MESSAGE\u DETAILS\u OpenGL=[/usr/lib/x86\u 64-linux-gnu/libGL.so][/usr/include][v()]
--OPENGL_FOUND=TRUE
--OPENGL_GLU_FOUND=是
--OPENGL_INCLUDE_DIR=/usr/INCLUDE
--OPENGL_INCLUDE_PATH=/usr/INCLUDE
--OPENGL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libGLU.so/usr/lib/x86_64-linux-gnu/libGL.so
--OPENGL_LIBRARY=/usr/lib/x86_64-linux-gnu/libGLU.so/usr/lib/x86_64-linux-gnu/libGL.so
--OPENGL_XMESA_FOUND=否
--OPENGL_gl_LIBRARY=/usr/lib/x86_64-linux-gnu/libGL.so
--OPENGL_glu_LIBRARY=/usr/lib/x86_64-linux-gnu/libGLU.so
--OPENGL_xmesa_INCLUDE_DIR=OPENGL_xmesa_INCLUDE_DIR-NOTFOUND

CMake模块目录在哪里?(Ubuntu 16.04)我在/usr/lib/cmake下找不到它。@Sterling根据文章,它位于/usr/share/cmake/Modules下。我正在使用CLion,在我的安装中它位于CLion目录中,也许你的也与IDE捆绑在一起(如果你正在使用IDE)。啊,好的,是的,我在/usr/share/cmake-2.8/Modules中找到了我的。谢谢谢谢(接受这一个,因为它是第一个…)cmake附带的FindXXX.cmake在哪里?