Как установить рабочий каталог в "каталог решений" в С++

Я хочу установить текущую директорию в директорию решения/имя конфигурации. Как мне это сделать? могу ли я использовать глобальные переменные каким-то образом?

edit: я пытаюсь прочитать файл, а текущий каталог изменяется в середине кода. Я хочу изменить его.

Ответ 1

Если ваш текущий каталог меняется, вы, вероятно, должны сохранить свою рабочую директорию при запуске в некоторой переменной, к которой вы можете получить доступ позже, чтобы установить cwd туда. По крайней мере, так я понимаю ваш вопрос.

Для получения cwd this может помочь.

Ответ 2

В Visual Studio 2010:

  1. Перейдите к свойствам проекта (щелкнув имя проекта в обозревателе решений, затем выберите "Свойства" во всплывающем меню).
  2. Затем в разделе "Свойства конфигурации/отладка" установите для рабочего каталога значение $(SolutionDir)$(Configuration)\.

Полный список доступных макросов (на docs.microsoft.com): Общие макросы для команд и свойств MSBuild

Ответ 3

Вы можете использовать подсистему posix (<direct.h>) и получить доступ к функциям

_getcwd()/_wgetcwd() Получает текущий рабочий каталог
_chdir()/_wchdir() Устанавливает текущий рабочий каталог

Если вам нужен ваш код для перекрестной платформы, вы можете сделать следующее:

#ifdef _WIN32
#  include <direct.h>
#  define getcwd _getcwd
#  define chdir _chrdir
#else
#  include <unistd.h>
#endif

и используйте getcwd и chdir (без основного подчеркивания).

Ответ 4

Пробовали ли вы использовать переменную окружения $(SolutionDir)?

Что касается этой темы здесь.

Кроме того, мы надеемся, что версия VS не имеет значения, но этот ответ представлен на основе предположения, что платформа VS2005.

Надеюсь, что это поможет.