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:无法将变量设置为禁用OpenCV_Opencv_Cmake - Fatal编程技术网

CMake:无法将变量设置为禁用OpenCV

CMake:无法将变量设置为禁用OpenCV,opencv,cmake,Opencv,Cmake,我有以下CMake代码段 #OpenCV option(USE_OPENCV "Use OpenCV data sources" ON) 在这里,我默认打开OpenCV的使用,然后我有: if(USE_OPENCV) find_package( OpenCV REQUIRED ) if(OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) else(OpenCV_FOUND)

我有以下CMake代码段

#OpenCV
option(USE_OPENCV "Use OpenCV data sources" ON)
在这里,我默认打开OpenCV的使用,然后我有:

if(USE_OPENCV)
    find_package( OpenCV REQUIRED )
    if(OpenCV_FOUND)
        include_directories(${OpenCV_INCLUDE_DIRS})
    else(OpenCV_FOUND)
        set(USE_OPENCV OFF)
        message("OpenCV could not be found. Turning OPENCV OFF.")        
    endif(OpenCV_FOUND)
endif(USE_OPENCV)
因此,我在没有OpenCV的配置上运行它,我从CMake得到消息:“找不到OpenCV,请关闭OpenCV”。但是,退出屏幕时,我看到CMake
USE\u OPENCV
变量仍处于启用状态。我正期待着它被点燃

我有什么明显做错了吗

[编辑] 可产生该行为的完整CMakeLists文件为:

project(Test)
cmake_minimum_required(VERSION 2.8)

#OpenCV
option(USE_OPENCV "Use OpenCV data sources" ON)

if(USE_OPENCV)
    find_package( OpenCV REQUIRED )
    if(OpenCV_FOUND)
        include_directories(${OpenCV_INCLUDE_DIRS})
    else(OpenCV_FOUND)
        set(USE_OPENCV OFF)
        message(FATAL_ERROR "OpenCV could not be found. Turning OpenCV OFF.")        
    endif(OpenCV_FOUND)
endif(USE_OPENCV)
做一些简单无意义的事情,比如:

project(Test2)
cmake_minimum_required(VERSION 2.8)

#OpenCV
option(USE_OPENCV "Use OpenCV data sources" ON)

if(USE_OPENCV)
    message("Turn it OFF!")
    set(USE_OPENCV OFF)
endif(USE_OPENCV)

即使这样也不行…

好的,因此必须缓存该值。所以,我做了一些类似的事情:

set(USE_OPENCV OFF CACHE BOOL "ON OFF" FORCE)

这似乎奏效了。如果有人有更好的解决方案,请更新线程。

您是否删除了CMakeCache.txt或更好的完整构建目录?我这样做了,但没有改变任何内容:/然后您必须进行调试,在每个分支中打印消息,并检查其是否符合您的期望。这几乎就是我的CMakeLists文件的要点。我已经编辑了这篇文章以包含完整的文件。你是否试图用一个简单的集合替换
选项
?在windows中使用
集合关闭
OPENSSL
(CMAKE\u USE\u OPENSSL off CACHE BOOL“ON off”FORCE
谢谢!