为外部CMake依赖关系指定构建选项

时间:2018-08-26 20:56:04

标签: build cmake

我正在编写项目的CMakeLists.txt文件。我的项目依赖于外部依赖项GLFW,幸运的是,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_subdirectory(libs/glfw)在最近克隆的glfw子模块上运行CMake。问题在于,GLFW的默认版本中包含许多不必要的功能,例如示例,单元测试和文档。

documentation for compiling GLFW列出了用于禁用这些功能GLFW_BUILD_EXAMPLESGLFW_BUILD_TESTSGLFW_BUILD_DOCS的CMake选项。

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

1 个答案:

答案 0 :(得分:0)

similar question中找到了我的答案。 我要做的就是添加:

option(GLFW_BUILD_EXAMPLES OFF)
option(GLFW_BUILD_TESTS OFF)
option(GLFW_BUILD_DOCS OFF)

就在add_subdirectory(libs/glfw)之前。

相关问题