【问题标题】:How could I replace a find_package of CMakeList by its installation directory?我怎么能用它的安装目录替换 CMakeList 的 find_package ?
【发布时间】:2016-10-03 21:19:35
【问题描述】:

我需要通过源安装 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 访问权限。

【问题讨论】:

  • 删除 CMakeCache.txt 并将带有 SFTML 目录路径的 CMAKE_PREFIX_PATH 传递给 CMake

标签: cmake sfml


【解决方案1】:

尝试通过添加以下行将您的 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

希望有帮助!

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2014-02-25
    • 2017-05-24
    相关资源
    最近更新 更多