如何知道 CMakeLists 的库变量名称?

Ste*_*ing 4 c++ opengl cmake

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

target_link_libraries(my_exe ${OPENGL_gl_LIBRARY} ${GLUT_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

我查找了如何将 glut 和 gl 与 CMake 联系起来,所以我发现我可以使用 ${OPENGL_gl_LIBRARY} 和 ${GLUT_LIBRARIES}。但是我怎么知道要使用的变量呢?我习惯于只做 ${THELIBRARY_LIBRARES},但在 gl 的情况下,它改为将“ gl ”添加到变量名中。如果不使用谷歌搜索,我怎么知道(对于我想使用的任何库)?

Flo*_*ian 5

除了查阅 find 模块的文档外,您还可以使用 CMake 的VARIABLES属性为您提供由您的find_package()调用定义的变量。

例如以下代码:

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()
Run Code Online (Sandbox Code Playgroud)

我机器上的输出:

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()
Run Code Online (Sandbox Code Playgroud)