【问题标题】:Why output saved in cmake-build-debug为什么输出保存在 cmake-build-debug 中
【发布时间】:2025-12-02 10:15:01
【问题描述】:

我有一个 C++ 项目,我想访问我保存在文件夹 images 中的一些数据。 我已经尝试从calibration.cpp 做:

std::string path = "images/*.jpg";
cv::glob(path, images);

但是它给了我一个没有检测到目录的错误。为了确定执行在哪个目录中查看,我创建了一个虚拟文本文件并保存它以查看它的保存位置。 它保存在 cmake-build-debug 中,这是在 CLion 中构建 CMakeLists.txt 时自动创建的文件夹。然后,如果我将 images 文件夹放在 cmake-build-debug 中,它会被看到,但我希望将图像文件夹放在父目录中。

  • 如何设置当前目录以从那里查找文件?

我的项目如下:

Camera Motion
-- cmake-build-debug
----     ...
-- images
---- image1.png
-- CMakeLists.txt
-- calibration.cpp
# CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(CameraMotion)

set(CMAKE_CXX_STANDARD 14)

find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(CameraMotion calibration.cpp)
target_link_libraries(CameraMotion ${OpenCV_LIBS})

# calibration.cpp
#include <iostream>

int main()
{
    std::ofstream myfile;
    myfile.open("output.txt");
    myfile << "output\n";
    myfile.close();
    std::string path = "images/*.jpg";

    cv::glob(path, images);
}

当我在 CLion 中运行项目时,它会说:

====================[ Build | CameraMotion | Debug ]============================
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/hectoresteban/CLionProjects/CameraMotion/cmake-build-debug --target CameraMotion -- -j 4
[100%] Built target CameraMotion

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

    CLion quick CMake tutorial 说:

    注意指定构建位置的生成路径字段 结果。调试配置文件的默认文件夹是 cmake-build-debug cmake-build-release 用于发布配置文件。您可以随时设置其他 您选择的位置。

    为什么要合并构建和源目录?将构建结果和源分开存储更方便。如果您想构建发布版本怎么办?

    【讨论】:

    • 我的目标是加载一个文件而不是保存它,所以这只是为了显示 CLion 考虑的当前目录。如何使用于访问输入文件的当前目录成为原始 CMake 所在的目录?我已编辑问题以阐明我的目标
    • 如果您只是想更改应用程序的当前工作目录,试试这个:*.com/a/25836234/3445338