修改CMake中的缓存变量无效
我正在Windows中使用CMake 3.10.2 当我像这样使用缓存设置变量时修改CMake中的缓存变量无效,cmake,cmake-gui,Cmake,Cmake Gui,我正在Windows中使用CMake 3.10.2 当我像这样使用缓存设置变量时 SET(ABAQUS_MAJORVERSION 2016) SET(ABAQUS_MAJORVERSION ${ABAQUS_MAJORVERSION} CACHE STRING "" ) 当我在GUI中将ABAQUS_MAJORVERSION变量更改为2014时,此更改不会在CMake中更新。它不断生成2016版 请在这方面提供帮助。 提前谢谢 编辑1: 这是项目结构: |CMakeLists.txt |Fin
SET(ABAQUS_MAJORVERSION 2016)
SET(ABAQUS_MAJORVERSION ${ABAQUS_MAJORVERSION} CACHE STRING "" )
当我在GUI中将ABAQUS_MAJORVERSION变量更改为2014时,此更改不会在CMake中更新。它不断生成2016版
请在这方面提供帮助。
提前谢谢
编辑1:
这是项目结构:
|CMakeLists.txt
|FindABAQUS.cmake
|-project1
|---source1.cpp
|---CMakeLists.txt which has SET(ABAQUS_MAJORVERSION 2016 CACHE STRING "")
|-project2
|---source2.cpp
|---CMakeLists.txt which has SET(ABAQUS_MAJORVERSION 2016 CACHE STRING "")
我在GUI中将ABAQUS_MAJORVERSION更改为2014。ABAQUS_MAJORVERSION于2014年在CMAKECHACHE.txt文件中发布。
但当打印消息(${ABAQUS_MAJORVERSION})时,它显示2016年
解决方案:
example: SET(MAJORVERSION 2016 CACHE STRING "")
您可能需要取消设置所有包含路径和库路径,以使新版本的包含路径和库路径生效
example: UNSET(INCLUDE_PATH CACHE)
UNSET(LIBRARY_PATH CACHE)
局部变量隐藏缓存的变量声明。我无法理解。请你详细解释一下,或者发布一个与此相关的链接。感谢链接问答确实详细描述了这一点。第一个命令设置一个局部变量
ABAQUS\u MAJORVERSION
。第二个命令设置一个缓存变量ABAQUS\u MAJORVERSION
。局部变量将取代缓存的变量。如果您只是想使用默认值将两个命令合并到集中(ABAQUS_MAJORVERSION 2016缓存字符串“”)
@Florian:引用的问题和答案没有描述这种隐藏。所以它很难复制。@Tsyvarev你是对的。对不起,我必须把它加在那里。但我敢肯定,我们已经在其他一些问答中谈到了这一点。你们有合适的副本吗?