C++ 如何知道CMakeLists的库变量名?
当使用CmakeList编译OpenGL项目时,我有以下行链接glut和gl: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”添
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在哪里?