CMake错误:“源代码似乎不包含CMakeLists.txt”

43

我正在Ubuntu 16.04中安装OpenCV。在安装必要的先决条件后,我使用了以下命令:-

kvs@Hunter:~/opencv_contrib$ mkdir build
kvs@Hunter:~/opencv_contrib$ cd build
kvs@Hunter:~/opencv_contrib/build$ 
kvs@Hunter:~/opencv_contrib/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX+/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_EXAMPLES=ON ..

但是它产生了一个错误:-

CMake Error: The source directory "/home/kvs/opencv_contrib" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
我使用了“module”文档中提供的命令。我该怎么解决? 我尝试了这里stack-overflow和其他一些问题的答案,但仍然无法解决。
项目 Git 存储库 在这里

1
你需要在OpenCV目录下创建一个文件夹(例如build),进入该文件夹,然后运行cmake。 - zindarod
我编辑了问题,包括几个额外的命令。在创建并进入“build”目录后,我使用了cmake命令@Zindarod。 - KVS
2
~/opencv_contrib 目录下是否有 CMakeLists.txt 文件? - kdopen
opencv_contrib 模块应该从主仓库中的 OpenCV 代码构建。请阅读此指南:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ - zindarod
1
没有。应该有吗?因为在Github存储库中,modules文件夹中的每个模块都有CmakeLists.txt,但是~/opencv_contrib没有。 - KVS
我使用命令kvs@Hunter:~$ git clone https://github.com/Itseez/opencv_contrib.git从主存储库构建了 opencv_contrib。 @Zindarod - KVS
6个回答

51

opencv文件夹内,而不是opencv-contrib文件夹内进行mkdir buildcd build操作。 CMakeLists.txt 文件就在那里。


25

如果你在cmake之后添加了..,它会像cd ..一样在目录中跳来跳去。但是,如果你想在同一个包含CMakeLists.txt文件的文件夹中运行cmake,请使用.而不是..


10
这个回复可能有点晚,但它可能会帮助遇到类似问题的用户。 opencv-contrib 包含额外的模块,但构建过程必须从 core OpenCV modules 进行。 按照以下步骤操作(假设您正在使用 CMake GUI 构建它):
  1. 这里下载OpenCV并将其解压到计算机的某个位置。在其中创建一个构建文件夹。

  2. 这里下载OpenCV的额外模块。确保您下载相同版本。

  3. 解压该文件夹。

  4. 打开CMake

  5. 点击“浏览源”并导航到您的OpenCV文件夹。

  6. 点击“浏览构建”并导航到您的构建文件夹。

  7. 点击配置按钮。您将被问及如何生成文件。从下拉菜单中选择Unix-Makefile,然后单击“确定”。 CMake将执行一些测试并返回出现在CMake窗口中的一组红色框。

  8. 搜索“OPENCV_EXTRA_MODULES_PATH”,并提供模块文件夹的路径(例如/Users/purushottam_d/Programs/OpenCV3_4_5_contrib/modules)

  9. 再次点击配置,然后点击生成。

  10. 转到构建文件夹

# cd build
# make
# sudo make install
  1. 这将在您的计算机上安装OpenCV库。

1

一种更简单的按步骤构建OpenCV源码的方法如下所述:从源码安装OpenCV,具体步骤如下:

步骤1:安装依赖项。

 sudo apt install build-essential cmake git pkg-config libgtk- 
   3-dev \libavcodec-dev libavformat-dev libswscale-dev 
   libv4l-dev \libxvidcore-dev libx264-dev libjpeg-dev 
   libpng-dev libtiff-dev \gfortran openexr libatlas-base- 
   dev python3-dev python3-numpy \libtbb2 libtbb-dev 
   libdc1394-22-dev

第二步:创建名为opencv_build的目录,并按如下所示克隆必要的存储库。
mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

步骤三:进入opencv目录,内部创建一个名为build的目录并进入其中。
cd ~/opencv_build/opencv
mkdir build && cd build

步骤4:调用Cmake来构建OpenCV。
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \ 
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..

如果第4步成功完成,您应该在终端的末尾看到以下行:构建已写入到第3步创建的目录中,以及此行以上的以下行, 配置完成 生成完成 步骤5:启动编译过程,其中-j是机器内处理器数量的标志,例如-j6表示我们有6个可用处理器。要验证处理器数量,请在终端上键入nproc,然后在-j之后使用此数字。要启动此过程,我们使用以下命令:
make -j6 

步骤6:安装OpenCV,我们使用以下代码:
sudo make install

然后检查OpenCV的版本以验证安装:

pkg-config --modversion opencv4

1
文件结构: 示例应用/
                CMakeLists.txt

                example-app.cpp

命令

                mkdir build

                cd build

                cmake .. -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch..

                cmake --build . --config Release

execution of the command along with the code

file structure


你能解释一下这里发生了什么吗?现在的答案很难理解。 - Simas Joneliunas
1
当我运行命令:cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch..时,它曾经抛出一个错误,说它无法检测到CMakeLists.txt文件,所以我进行了一些编辑,使命令能够检测到CMakeLists.txt文件,我使用了(. .)来使命令能够检测到该文件,后续的命令"cmake --build . --config Release"将构建您的应用程序,即创建可执行文件。我还提供了我的目录结构,名为example-app。 - rajkamal

1

我之前遇到过类似的问题,无论是在一个干净的目录下操作、从外部构建还是将源代码中的CMakeLists.txt文件复制/粘贴到干净的目录中,都没有解决问题。最终,我通过conda安装成功了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接