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
Opencv 如何使用新生成器重新使用现有的CMake变量_Opencv_Cmake - Fatal编程技术网

Opencv 如何使用新生成器重新使用现有的CMake变量

Opencv 如何使用新生成器重新使用现有的CMake变量,opencv,cmake,Opencv,Cmake,我需要在VS2015中为32位和64位构建OpenCV 我知道每个生成器都需要一个单独的构建树 OpenCV的CMake配置有大约300个用户可配置的变量,我终于满意地设置了这些变量。现在我想使用完全相同的决策集来构建64位版本 有没有办法将代表我的决策的变量值转移到新的构建树中?(除了并排打开两个CMake GUI并检查所有~300个值是否对应之外。) 顺便说一句,如果更改了生成器,则必须根据CMake邮件列表[]删除CMakeCache.txt。手动编辑它非常危险,可能会导致未定义的行为 谢

我需要在VS2015中为32位和64位构建OpenCV

我知道每个生成器都需要一个单独的构建树

OpenCV的CMake配置有大约300个用户可配置的变量,我终于满意地设置了这些变量。现在我想使用完全相同的决策集来构建64位版本

有没有办法将代表我的决策的变量值转移到新的构建树中?(除了并排打开两个CMake GUI并检查所有~300个值是否对应之外。)

顺便说一句,如果更改了生成器,则必须根据CMake邮件列表[]删除CMakeCache.txt。手动编辑它非常危险,可能会导致未定义的行为

谢谢你把我的评论变成了答案

您可以在新目录中使用部分
CMakeCache.txt
(CMake只需预加载其中的值,然后重新评估其余的值)

因此,您可以使用类似grep的方法

findstr "OpenCV_" CMakeCache.txt > \My\New\Path\CMakeCache.txt
刚刚测试过它,似乎工作正常

参考

    • 将我的评论转化为答案

      您可以在新目录中使用部分
      CMakeCache.txt
      (CMake只需预加载其中的值,然后重新评估其余的值)

      因此,您可以使用类似grep的方法

      findstr "OpenCV_" CMakeCache.txt > \My\New\Path\CMakeCache.txt
      
      刚刚测试过它,似乎工作正常

      参考


      可能的重复项不相同。它建议重新使用cmakcache.txt来重复完全相同的构建。如果更改了生成器,则应删除CMakeCache.txt,因为几乎不可能确保其中存储的所有内容与新生成器一致。我理解你的观点。但是也允许使用部分
      CMakeCache.txt
      (CMake只需预加载存在的值,然后重新评估其余的值)。因此,您可以使用类似于
      grep
      的方法,查找dstr“OpenCV”cmakcache.txt>\My\New\Path\cmakcache.txt。刚刚测试过它,似乎和预期的一样。可能的副本不一样。它建议重新使用cmakcache.txt来重复完全相同的构建。如果更改了生成器,则应删除CMakeCache.txt,因为几乎不可能确保其中存储的所有内容与新生成器一致。我理解你的观点。但是也允许使用部分
      CMakeCache.txt
      (CMake只需预加载存在的值,然后重新评估其余的值)。因此,您可以使用类似于
      grep
      的方法,查找dstr“OpenCV”cmakcache.txt>\My\New\Path\cmakcache.txt。刚刚测试了它,看起来像预期的那样工作。这是一个很好的努力,所以我会把它标记为答案,但我没有实际测试它。这是一个很好的努力,所以我会把它标记为答案,但我没有实际测试它。