Build 为外部CMake依赖项指定生成选项

Build 为外部CMake依赖项指定生成选项,build,cmake,Build,Cmake,我正在编写项目的CMakeLists.txt文件。我的项目依赖于外部依赖,幸运的是,GLFW还使用CMake作为其构建系统。我正在使用find_package()和git子模块来处理依赖关系管理,目前我的CMakeLists.txt文件是这样的: # CMake version cmake_minimum_required(VERSION 3.0) # project name project(CHIP-8) # dependency management find_package(OpenG

我正在编写项目的CMakeLists.txt文件。我的项目依赖于外部依赖,幸运的是,GLFW还使用CMake作为其构建系统。我正在使用find_package()和git子模块来处理依赖关系管理,目前我的CMakeLists.txt文件是这样的:

# CMake version
cmake_minimum_required(VERSION 3.0)
# project name
project(CHIP-8)

# dependency management
find_package(OpenGL REQUIRED)

find_package(glfw)
if(NOT glfw)
    message("Unable to locate glfw.")

    message("Cloning the repository.")
    execute_process(
        COMMAND
        git submodule update --init -- libs
        WORKING_DIRECTORY
        ${CMAKE_CURRENT_SOURCE_DIR}
    )

    message("Building glfw.")
    add_subdirectory(libs/glfw)
endif()
根据我对CMake的有限理解,命令
add_子目录(libs/glfw)
在最近克隆的glfw子模块上运行CMake。问题是GLFW的默认构建中有很多不必要的特性,例如示例、单元测试和文档

列出了用于禁用这些功能的CMake选项
GLFW_BUILD_示例
GLFW_BUILD_测试
,以及
GLFW_BUILD_文档

我有两个问题,第一个是如何指定这些选项,第二个是我传递给find_package accurate的参数(我的系统上安装了GLFW,但每次我构建它时,它仍会尝试克隆和构建存储库)。

在一篇文章中找到了我的答案。 我所要做的就是加上:

option(GLFW_BUILD_EXAMPLES OFF)
option(GLFW_BUILD_TESTS OFF)
option(GLFW_BUILD_DOCS OFF)
就在
添加子目录(libs/glfw)
之前