cmake - 如果用户未更改,则设置 cmake 变量

标签 cmake

仅当用户未更改时,我如何(重新)设置 cmake 变量?

我有这个变量:

set(DIR "testdir" CACHE PATH "main directory")
set(SUBDIR ${DIR}/subdir CACHE PATH "subdirectory")

在第一次运行时,变量被初始化为 testdirtestdir/subdir .

当用户改变时DIR并在不更改的情况下重新运行 cmake SUBDIR ,我想生成一个新的 SUBDIR路径,而我想保留 SUBDIR路径,当用户更改它时。

所以SUBDIR应根据 DIR 的新值设置为新的默认值, 如果 DIR已更改和 SUBDIR以前从未改变过。

最佳答案

把我的评论变成答案

您可以使用 MODIFIED 缓存变量属性,但文档说

Do not set or get.



也许更好的方法是使用 if 语句检查修改:
set(DIR "testdir" CACHE PATH "main directory")
if (NOT DEFINED SUBDIR OR SUBDIR MATCHES "/subdir$")
    set(SUBDIR "${DIR}/subdir" CACHE PATH "subdirectory" FORCE)
endif()

或者你只是不放 DIRSUBDIR并将详细信息放入描述中:
set(SUBDIR "subdir" CACHE PATH "subdirectory of main directory (see DIR)")

关于cmake - 如果用户未更改,则设置 cmake 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43542381/

相关文章:

c++ - CMake 错误 : linker command failed with exit code 1 and cpp. o 文件

c++ - 无法使用CMake生成OpenCV项目

unix - 经验丰富的 Unix 程序员使用 Microsoft 工具应该注意什么?

c - 如何在 CMAKE 中使用 FLEX

c++ - 将一个CMakeLists文件分成多个项目

c++ - python/c++ - 使用 cmake 编译共享库并使用 distutils 安装

c++ - 配置 C++ 应用程序构建的简单方法

找不到路径中的 CMake 编译器

c++ - libfreenect c++ 包装器中的 undefined reference

linux - CMake:不要为链接中使用的单个库设置 rpath