Сборка с использованием Visual Studio cl.exe с параллельными потоками make вызывает периодические проблемы. Неустранимая ошибка: C1083 Не удается открыть файл с исходным кодом. - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь создать проект, используя следующий рецепт make.

compile:

  1. wine cl.exe предварительно обработать файл a. cpp в библиотеку / ai
  2. сделайте что-нибудь в библиотеке / ai для создания a.tmp. cpp
  3. wine cl.exe скомпилируйте a.tmp. cpp в a.obj

Я запускаю этот рецепт make с помощью gnu make с большим количеством потоков. Предварительная обработка и компиляция выполняются cl.exe с использованием Wine на linux.

Моя проблема в том, что я периодически получаю такие ошибки, как

Неустранимая ошибка C1083: невозможно открыть a.tmp. cpp: такого файла или каталога нет.

Если я проверяю файловую систему, файл a.tmp. cpp действительно существует. Кроме того, я изменил рецепт на

compile:

  1. wine cl.exe предварительно обработать файл a. cpp в библиотеку / ai
  2. сделать что-нибудь в библиотеке / ai для создания a.tmp. cpp
  3. , если a.tmp. cpp не существует, вызвать ошибку
  4. wine cl.exe скомпилировать a.tmp. cpp в .obj

Тем не менее, ошибка никогда не появляется на 3-м шаге (чего я ожидал).

Я не уверен, является ли это ошибкой параллелизма, ошибкой визуальной студии или ошибкой вина, но увеличение количества потоков увеличивает частоту ошибок.

По связанной ссылке они выполняют некоторую очистку файлового кеша, что я не смог найти, как сделать с вином.

Периодические ошибки доступа к файлам в дочерних процессах

Пожалуйста, предложите любые дальнейшие методы отладки или возможное решение, чтобы исправить это, и сборки продолжают периодически давать сбои.

...