Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改CMake中的缓存变量无效_Cmake_Cmake Gui - Fatal编程技术网

修改CMake中的缓存变量无效

修改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

我正在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
|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你是对的。对不起,我必须把它加在那里。但我敢肯定,我们已经在其他一些问答中谈到了这一点。你们有合适的副本吗?