Содржина на објавата
Теперь это кажется очевидным, но оттого так впечатляет. Представим вы делаете проект и в нем нужно обращаться по относительным путям, например вам нравится откладывать эти пути от корня проекта. Значит вам (и всем кто будет компилировать этот проект) нужно аккуратно выставлять Working Directory на корень проекта (и делать это для каждого запускаемого файла). Если вы используете IDEA - вроде бы все хорошо, и там в какой то момент начали выставлять Working Directory в корень проекта по умолчанию. Если вы используете CLion - придется настраивать, но интерфейс достаточно интуитивный и понятный. Если у вас Visual Studio - то хтонь-хтонь-ужас-смерть, придется пытаться разобраться как настраивать запускаемые CMake target-ы, редактировать ТЕКСТ JSON КОНФИГОВ (это что... арч?), и не факт что ПОЛУЧИТСЯ (у меня не получилось). Но когда критическая масса желания исправить раз и навсегда ПРЕВЫШАЕТ ЛЮБЫЕ РАЗУМНЫЕ РАМКИ (особенно если этот проект запускает много людей и часть из них с Visual Studio, и они например не могут активировать бесплатный CLion даже не знаю по каким причинам) - то в голову может прийти хорошая идея! Хорошая идея: в начале main() вызывать configureWorkingDirectory(), которая смотрит на текущую рабочую папку, проверяет есть ли в ней тот набор папок что находится в корне проекта (обычно это довольно уникальный набор имен), если нет - то поднимаемся в родительскую папку и проверяем там и так далее пока либо не найдем нужную папку (ее и используем как working directory), либо пока не дойдем до корня (в таком случае кидаем ошибку). QoL вырастает ДРАМАТИЧЕСКИ!!11 🤩 UPD: дорогой подписчик предложил красивое упрощение - в configureWorkingDirectory() использовать фиксированный путь до корня проекта полученный отступами от пути к исходнику configure_work_dir.cpp - __FILE__/../../../