How to know library variable names for CMakeLists?

前端 未结 3 1172
不知归路
不知归路 2020-12-04 02:07

When using CMakeLists to compile an OpenGL project, I have the following line to link glut and gl:

target_link_libraries(my_exe ${OPENGL_gl_LIBRARY} ${GLUT_L         


        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-04 02:58

    Besides consulting the find module's documentation, you could also use CMake's VARIABLES property to give you the variables that were defined by your find_package() call.

    For an example the following code:

    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()
    

    Outputs on my machine:

    -- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
    -- FIND_PACKAGE_MESSAGE_DETAILS_OpenGL = [/usr/lib/x86_64-linux-gnu/libGL.so][/usr/include][v()]
    -- OPENGL_FOUND = TRUE
    -- OPENGL_GLU_FOUND = YES
    -- 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 = NO
    -- 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
    

提交回复
热议问题