【问题标题】:cmake set subdirectory optionscmake 设置子目录选项
【发布时间】:2013-11-27 10:04:32
【问题描述】:

有没有设置子目录的选项?

所以我有一个依赖子项目的项目,子项目有一个选项: OPTION(WITH_FUNCTION_X "启用 X 功能" ON)

在我的父项目中,我想包含子项目,但没有 X 功能。

谢谢!

【问题讨论】:

    标签: cmake


    【解决方案1】:

    CMake 的option 命令或多或少地向缓存中添加了一个布尔变量。

    如果你想覆盖一个选项的默认值,只需在拉入子项目之前自己添加一个同名的变量到缓存中:

    set(WITH_FUNCTION_X OFF CACHE BOOL "enable X functionality")
    add_subdirectory(subproject)
    

    请注意,如果缓存中已经存在该名称的值,set 命令不会执行任何操作。如果要覆盖任何现有值,请在该命令中添加 FORCE 选项。

    FORCE 示例

    set(WITH_FUNCTION_X OFF CACHE BOOL "enable X functionality" FORCE)
    add_subdirectory(subproject)
    

    【讨论】:

    • 似乎set() 在 Mac 和 Linux 上的 CMake 之间有不同的效果(或者可能是不同的版本?!?)。今天我自己打了这个,让我发疯,直到我使用CACHE BOOL "text" 选项进行设置。如果没有CACHE,它在 Mac 上运行良好,但在 Linux 上不行。
    • 如果您想隐藏它(来自 CMake GUI),请使用 INTERNAL 而不是 BOOL,例如 set(WITH_FUNCTION_X OFF CACHE INTERNAL "" FORCE)
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多