Как зарегистрировать файлы папки как файловую систему в заголовочном файле?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как зарегистрировать файлы папки как файловую систему в заголовочном файле?

Сообщение Anonymous »

Вот структура моего проекта:

Код: Выделить всё

❯ tree -d -L 2

.
├── build
│   ├── CMakeFiles
│   ├── CMakeScripts
│   ├── Debug
│   ├── Release
│   ├── Testing
│   ├── build
│   └── proj.xcodeproj
├── input
└── output
Проблема в том, что путь сборки и путь к исполняемому файлу сильно различаются даже в моей системе. XCode использует десятки различных путей к исполняемым файлам для каждой конфигурации. Например, если я хочу профилировать/отлаживать свое приложение в XCode, входные данные находятся в ../../input/input.txt. Я занимаюсь профилированием только в XCode, поэтому, когда я разрабатываю в VSCode, исполняемый файл помещается прямо в папку сборки, поэтому ввод теперь находится в ../input/input.txt. CMake Tools в VSCode также использует разные папки на разных уровнях вложенности для каждого выпуска или сборки. Или даже я передам этот проект для тематического исследования, я не могу проинструктировать их, например, перейти к соответствующему исполняемому файлу и переместить ввод в подходящее место. Может быть, они будут строиться в другую папку? Может быть, они будут иметь разный уровень вложенности?
Поэтому доступ к папке ввода путем относительного импорта невозможен.
Я пытался сделать:

Код: Выделить всё

#ifndef INPUT_FOLDER_H
#define INPUT_FOLDER_H
#include 
namespace fs = std::filesystem;
fs::path INPUT_PATH = fs::current_path();
#endif
в input_folder.h в папке input, но INPUT_PATH не дает мне путь к input_folder.h, который он мне дает каталог сборки еще раз, поскольку исполняемый файл находится в папке сборки. Если бы он находился в папке Debug, то INPUT_PATH снова указывал бы на Debug. То, что я хочу, в основном сводится к https://pkg.go.dev/os#DirFS

DirFS возвращает файловую систему (fs.FS) для дерево файлов, находящихся в каталоге dir.

Существует ли эквивалент C++ или даже лучшее решение для этих файловых систем? У меня установлена ​​последняя версия Boost, если это поможет.

Подробнее здесь: https://stackoverflow.com/questions/781 ... eader-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»