Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Модератор
 Аватар для Curry
5154 / 3474 / 536
Регистрация: 01.06.2013
Сообщений: 7,532
Записей в блоге: 9

VS 2026, CMake проект. Не устанавливается текущая директория

15.12.2025, 19:40. Показов 761. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!

Хочу выполнять отладку с текущей (рабочей) директорией E:\work\CPP\genfw24.
Там лежит файл BootTest.fw24 который я передаю в аргументе.

C++
1
2
3
4
5
6
7
8
9
int main(int argc, char* argv[]) {
    std::string inputFile = argv[1]; // в отладчике виден как "BootTest.fw24", что и требуется.
    std::ifstream in(inputFile);
    if (!in) {
        auto curdir=fs::current_path(); // = "E:\\work\\CPP\\genfw24\\out\\build\\x64-debug"
        std::cerr << "Cannot open input file: " + inputFile << ".  Сurrent dir is " << curdir << std::endl;
        return 1; // Завершается, т.к. файл не открыт потому что каталог не тот.
    }
............
.vs\launch.vs.json:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "genfw24.exe",
      "name": "genfw24.exe",
      "workingDirectory": "E:\\work\\CPP\\genfw24",
      "args": [
        "BootTest.fw24"
      ]
    }
  ]
}
Копайлот предлагает или заменить launch.vs.json на точно такой же (делал, не помогает), либо захардкодить путь.

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "genfw24.exe",
      "name": "genfw24.exe",
      "args": [
        "E:\\work\\CPP\\genfw24\\BootTest.fw24"
      ]
    }
  ]
}
- так то файл открывается. Но хотелось бы знать как указать текущую рабочую директоию.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2025, 19:40
Ответы с готовыми решениями:

Неправильно воспринимается текущая директория.
Не могу понять в чем причина. Проблема в следующем. Два почти одинаковых проекта. В одном...

Не записывается текущая директория в переменную
Отладка почему то не работает. В переменных вместо ожидаемых значения какие то крякозябры. Каждый...

CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM
Установил CMake. Здесь находится mingw D:\ProgramFiles\Qt\Tools\MinGW\bin mingw32-make.exe(путь в...

6
фрилансер
 Аватар для Алексей1153
6450 / 5651 / 1129
Регистрация: 11.10.2019
Сообщений: 15,048
15.12.2025, 20:25
Curry,

а если задать текущий каталог?

что-то вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <filesystem>
 
int main(int count, char** list)
{
    //установка текущей директории такой же, как у экзешника
    if(count>=1)
    {
        std::filesystem::current_path(std::filesystem::path{list[0]}.parent_path());
        
        std::cout<<"my path: "<<list[0]<<'\n';
        std::cout<<"cur dir: "<<std::filesystem::current_path()<<'\n';
    }
}
1
Модератор
 Аватар для Curry
5154 / 3474 / 536
Регистрация: 01.06.2013
Сообщений: 7,532
Записей в блоге: 9
15.12.2025, 21:11  [ТС]
Алексей1153, вопрос не про язык или библиотеки, а про IDE.
Но я проверил, сама программа при выполнении может менять текущую директорию вашим способом.
0
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
16.12.2025, 11:31
Curry, в официальной справке (launch.vs.json schema reference (C++)) нет ничего про свойство workingDirectory. Есть описание макроса defaultWorkingDirectory, который по этому описанию превращается в задание свойства cwd. По описанию свойства cwd можно предположить, что именно это свойство вам и нужно использовать.

cwd string Full path to the directory on the remote system where the program will run. Defaults to "${debugInfo.defaultWorkingDirectory }".
1
Модератор
 Аватар для Curry
5154 / 3474 / 536
Регистрация: 01.06.2013
Сообщений: 7,532
Записей в блоге: 9
16.12.2025, 12:50  [ТС]
Ygg, не помогает ни
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "genfw24.exe",
      "name": "genfw24.exe",
      "args": [
        "BootTest.fw24"
      ],
      "cwd": "${workspaceRoot}"
    }
  ]
}
ни

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "genfw24.exe",
      "name": "genfw24.exe",
      "args": [
        "BootTest.fw24"
      ],
      "cwd": "e:\\work\\CPP\\genfw24"
    }
  ]
}
Под отладчиком текущая директория это директория экзешника.
Баг VS 2026?
0
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
16.12.2025, 14:54
Лучший ответ Сообщение было отмечено Curry как решение

Решение

Цитата Сообщение от Curry Посмотреть сообщение
не помогает
Да, у меня то же не работает. "currentDir" меняет рабочий каталог, хотя описанию в справке не очень соответствует.
0
Модератор
 Аватар для Curry
5154 / 3474 / 536
Регистрация: 01.06.2013
Сообщений: 7,532
Записей в блоге: 9
17.12.2025, 09:27  [ТС]
Ygg, так заработало, в смысле, текущий каталог меняется.
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "genfw24.exe",
      "name": "genfw24.exe",
      "args": [
        "BootTest.fw24"
      ],
      "currentDir": "E:\\work\\CPP\\genfw24"
    }
  ]
}
Чудеса чудесатые.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2025, 09:27
Помогаю со студенческими работами здесь

CMake в принципе не воспринимает никакие команды, кроме cmake --help
Здравствуйте! Пытаюсь назначить Cmake компилятор, который он должен использовать, для этого пишу...

Qt creator. Не удается добавить стороннюю библиотеку в проект cmake (добавление в проект boost/algorithm)
Собственно, весь вопрос в заголовке. Осваиваю cmake, не могу подключить &quot;алгоритм&quot; из буст. ...

Добавление Include-директории и Lib-директории в проект VS2010
Здравствуйте. У меня возникла следующая проблема: Решил поучится в использовании библиотек...

Как в CMake указать директорию, чтобы в программе можно было задавать относительный путь к файлам из этой директории?
main.cpp расположен по такому пути: /home/User/Документы/Project/src/app/app/main.cpp В main.cpp...

Cmake проект сборки документации
Здравствуйте, хочу сделать проект со сборкой документации, что-то типо doxygen target example. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru