Visual Studio Pro 2017 проблема зависимости сборки - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть решение Visual Studio C ++, в котором, похоже, есть проблема с зависимостями. Вот некоторая информация:

  1. Он всегда правильно собирается в режиме отладки.
  2. Он всегда собирается правильно в режиме выпуска, если я сначала делаю «Чистое решение»
  3. В противном случае он неправильно строится в режиме Release. Если я обновлю значение в заголовочном файле, скомпилированный результат все равно будет иметь старое значение.

Вот дополнительная информация. Параметр, который я изменяю, является единственным значением в моем файле release.h. Этот файл имеет одну строку, где я #define VERSION. VERSION используется в функции, которая возвращает текущую версию моего программного обеспечения. Когда я собираю после изменения этого значения в заголовочном файле, система правильно распознает, что исходный файл должен быть перекомпилирован. После того, как он перекомпилирует исходный файл, я получаю следующее:

1> Generating code
1> 0 of 168 functions ( 0.0%) were compiled, the rest were copied from previous compilation.
1> 0 functions were new in current compilation
1> 0 functions had inline decision re-evaluated but remain unchanged

Я также убедился, что такое же поведение происходит, если я заменяю макрос VERSION и напрямую использую число. Если я только изменяю число, я получаю тот же результат, что и необходимость сделать «Чистое решение» для правильного построения решения.

Наконец, если я добавлю в код строку фиктивного кода, такую ​​как:

int i = 7;  // i is not used in the function

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

1> Generating code
1> 2 of 168 functions ( 1.2%) were compiled, the rest were copied from previous compilation.
1> 0 functions were new in current compilation
1> 0 functions had inline decision re-evaluated but remain unchanged

Дальнейшие компиляции не будут работать правильно, если что-то не меняется, например удаление int i = 7;

В этом случае он будет работать в следующий раз.

Мысли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...