仅当用户未更改时,我如何(重新)设置 cmake 变量?
我有这个变量:
set(DIR "testdir" CACHE PATH "main directory")
set(SUBDIR ${DIR}/subdir CACHE PATH "subdirectory")
在第一次运行时,变量被初始化为
testdir
和 testdir/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()
或者你只是不放
DIR
内SUBDIR
并将详细信息放入描述中:set(SUBDIR "subdir" CACHE PATH "subdirectory of main directory (see DIR)")
关于cmake - 如果用户未更改,则设置 cmake 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43542381/