将CMake变量从GUI导出到命令行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将CMake变量从GUI导出到命令行相关的知识,希望对你有一定的参考价值。

是否可以将在CMake-GUI中设置的所有变量值导出到单个命令行字符串,以便可以快速从外部工具中使用它?

所以输出将是这样的:

cmake -DVar1=ON -DVar2="foo" ...
答案

你可以从中获取它们

Tools->"Show My Changes"
另一答案

没有cmake-gui集成方式可以通过多个configure / generate运行导出或记录更改的变量。

但是对缓存变量的每次更改都会再次运行配置步骤,因此我想出了以下代码,您可以将其添加到主CMakeLists.txt中以保留原始变量并对未来的变量列表进行区分:

if (EXISTS "${CMAKE_BINARY_DIR}/CMakeCache.txt")
    file(
        STRINGS 
        "${CMAKE_BINARY_DIR}/CMakeCache.txt"
        _vars
        REGEX "^[^#/]"
    )
    if (NOT EXISTS "${CMAKE_BINARY_DIR}/CMakeCacheVars.txt")
        file(
            WRITE "${CMAKE_BINARY_DIR}/CMakeCacheVars.txt"
            "${_vars}"
        )
    else()
        file(
            READ "${CMAKE_BINARY_DIR}/CMakeCacheVars.txt"
            _vars_ori
        )
        list(REMOVE_ITEM _vars ${_vars_ori})
        message("Changed values: ${_vars}")
    endif()
endif()

以上是关于将CMake变量从GUI导出到命令行的主要内容,如果未能解决你的问题,请参考以下文章

将 CMake 选项从命令行移动到*** CMakeLists.txt

CMAKE 使用环境变量而不将它们作为命令行参数传递?

为 cmake 指定库以从命令行链接到

cmake的缓存变量可以用于cpp源码中吗

CMAKE_INSTALL_PREFIX如何设置默认值,并且保留从命令行覆盖的能力?

如何在 CMake GUI 中显示 FooConfig.cmake 文件中的 CMake 变量?