我怎么能用它的安装目录替换CMakeList的find_package?

How could I replace a find_package of CMakeList by its installation directory?

我需要通过源代码安装 SFML,但我不能 运行 cmake,因为没有安装包 (xcb-image)

我通过源代码安装了这个包,但是我如何告诉 CMake 这个包已经安装,它需要查看一个特殊的目录?

if(NOT SFML_OPENGL_ES)
    find_package(OpenGL REQUIRED)
    include_directories(${OPENGL_INCLUDE_DIR})
    if(SFML_OS_LINUX OR SFML_OS_FREEBSD)
        find_package(XCB COMPONENTS xlib_xcb image randr REQUIRED)
        if(NOT LIBXCB_FOUND)
            message(FATAL_ERROR "Xcb library not found")
        endif()
        include_directories(${LIBXCB_INCLUDE_DIRS})
    endif()
endif()

我没有root权限。

尝试将 xcb /include/lib 目录添加到您的 CMakeLists,方法是添加以下行:

INCLUDE_DIRECTORIES(/path/to/your/xcb/include)
LINK_DIRECTORIES(/path/to/your/xcb/lib)

否则,如果这不起作用并且您有一个用于 cxb 的 cmake 文件(类似于 xcb.cmake),请在您的项目根目录下创建一个名为 cmake/Modules/ 的文件夹,添加 xcb.cmake 在该文件夹下,并在根 CMakeLists.txt 中包含以下代码:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")

为了更好地理解,请查看 CMake:How To Find Libraries

希望对您有所帮助!