我正在从事一项学术研究,在Fast-Downward的基础上实现新的搜索算法,这是一个c++开源,实现了几个Search Algorithms和许多搜索域和问题。还安装了Lab,一个管理编译和运行脚本的Python包。你知道吗
最近我尝试为它的ML算法包含OpenCV库,以便在我的搜索算法中集成这些算法。你知道吗
但是我鼓励在FD项目中包含一些lib时出现一些问题,并且不能用FD编译OpenCV。你知道吗
项目层次结构:
fast_downward
| -- benchmarks
| -- experiments
| -- lab
| -- misc
| -- src
| | -- preprocess
| | -- search
| | -- translate
| | -- VAL
| | -- ML
ML目录是我要编译的新子目录。你知道吗
编译尝试:
在src/CMakeLists.txt
下:
include(ML/CMakeLists.txt)
add_subdirectory(ML)
但是编译失败了。你知道吗
老实说,我从未尝试过编辑CMake
文件,我也不知道该怎么做。你知道吗
所以,我的问题是如何在主项目中集成OpenCV包/子文件夹(在名为ML的项目中)?
编辑:
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
您不应该需要
include(ML/CMakeLists.txt)
,add_subdirectory(ML)
应该足够在src/CMakeLists.txt
内。现在,我们一般可以有两种情况:
这两起案件需要以略有不同的方式处理。你知道吗
系统范围的OpenCV安装
假设OpenCV安装在系统的某个地方。那么在
src/ML/CMakeLists.txt
中应该有如下几行:这是为了产生一个可执行文件,但是如果你想产生一个库,你应该有
add_library(...)
而不是add_executable(...)
。如果您需要OpenCV中的特定组件,您应该向find_package(OpenCV REQUIRED COMPONENTS core imgproc ...)
索取,当然也可以查阅OpenCV文档。请注意,您的CMake可能没有FindOpenCV.cmake
脚本,因此您可能无法使用find_package(OpenCV)
。在这种情况下,你需要从网上抓到一个。还可以参考它的源代码,因为它可能定义了包含includes和库的不同变量,这意味着可能会出现这样的情况,即不使用例如target_link_libraries(test ${OpenCV_LIBS})
而应该使用target_link_libraries(test ${OpenCV_LIBRARIES})
。你知道吗您下载的OpenCV源代码,包含在包内/包外
在本例中,我假设您的系统中的某个目录中有OpenCV包/源代码;请记住,在本例中您需要构建OpenCV,apt get将不会为您完成这项工作。在你的
src/ML/CMakeLists.txt
中,你会有值得咨询的来源有:
OpenCV intro: cmake
linking opencv libraries included as an external project via cmake
Configuring an c++ OpenCV project with Cmake
Could not find module FindOpenCV.cmake ( Error in configuration process)
CMake and OpenCV 3.0
sample FindOpenCV.cmake
相关问题 更多 >
编程相关推荐