czglsl@czglsl-System-Product-Name:~/opt/opencv-4.5.0/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.5.0/build -D OPENCV_ENABLE_NONFREE:BOOL=ON -D INSTALL_C_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv-4.5.0/modules .. CMake Error at CMakeLists.txt:11 (message): FATAL: In-source builds are not allowed. You should create a separate directory for build files. -- Configuring incomplete, errors occurred!
时间: 2025-07-16 15:22:47 浏览: 5
<think>好的,用户遇到了在编译OpenCV时出现的“FATAL: In-source builds are not allowed”错误。我需要先理解这个错误的原因。根据引用内容,这个错误是因为用户直接在源代码目录下进行编译,也就是所谓的in-source build,而CMake不允许这样做,可能是为了防止污染源代码目录。
接下来,我需要回忆或查找如何正确配置CMake来避免这个问题。根据引用[3]和[4],解决方法是创建一个独立的构建目录,比如“build”文件夹,然后在该目录下运行cmake命令,指向源代码目录。步骤大致是:创建目录,进入目录,运行cmake ..,然后进行编译。
用户可能需要具体的步骤指导,所以应该分步骤说明,包括命令示例。同时,需要提醒用户清理之前的CMake缓存文件,比如删除CMakeCache.txt,这可能在引用[3]中提到过。
还要考虑用户可能的后续问题,比如如何确保编译参数正确,或者如何处理其他相关错误,如引用[2]提到的boostdesc_bgm.i缺失的问题,但用户当前的问题主要是in-source builds错误,所以暂时不需要深入其他错误,但或许可以简要提及常见问题或建议参考其他资源。
最后,确保回答结构清晰,按照用户的要求使用中文,正确应用引用标识,并在末尾生成相关问题。同时,检查是否有遗漏的步骤或可能的误区,比如是否必须删除CMakeCache.txt,或者是否可以使用不同的目录名称。</think>要解决OpenCV编译时出现的`FATAL: In-source builds are not allowed`错误,需遵循以下步骤:
### 错误原因
此错误是因为直接在OpenCV源代码根目录下运行CMake(即“in-source build”),可能导致编译生成文件覆盖源代码。CMake强制要求使用独立的构建目录(out-of-source build)以保证代码安全[^1][^3][^4]。
### 修复步骤
1. **创建独立构建目录**
在OpenCV源代码目录外新建一个文件夹(例如`build`),并进入该目录:
```bash
mkdir build
cd build
```
2. **清理残留缓存文件**
若之前尝试过编译,需删除根目录下的`CMakeCache.txt`以避免配置冲突[^3][^4]:
```bash
rm ../CMakeCache.txt # 确保在build目录下执行
```
3. **配置CMake参数**
指定OpenCV源代码路径(假设源码在上级目录)并添加编译选项:
```bash
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/your/install/path
```
其中`/your/install/path`是自定义的安装路径(如`/usr/local`)。
4. **执行编译与安装**
完成配置后,运行编译和安装命令:
```bash
make -j$(nproc) # 使用多线程加速编译
sudo make install
```
### 注意事项
- 若需添加额外模块(如`opencv_contrib`),需通过CMake参数`-DOPENCV_EXTRA_MODULES_PATH`指定模块路径[^2]。
- 若编译中遇到`boostdesc_bgm.i`缺失错误,需手动下载对应文件并放置到指定目录[^2]。
阅读全文
相关推荐



















