# включить файл, найденный в сборке отладки, но не в сборке выпуска

#visual-studio-2010

#visual-studio-2010

Вопрос:

У меня есть проект C (Brew C ) в MVSC 10, который компилируется в сборке debug, но не в сборке release, но я не могу понять, почему нет.

Проблема в том, что файлы заголовков в определенном каталоге не могут быть найдены, структура каталогов:

 .mak
.sln
etc.
/inc/A/m.h
/inc/B/n.h
/inc/C/o.h
/inc/util/html/a.h
/inc/util/html/b.h
/src/A/
/src/B/
/src/C/
/src/util/html/
  

т.е. основные файлы проекта находятся в корневом каталоге, а заголовочные и исходные файлы распределены по подпапкам.

a.h и b.h можно найти в сборке отладки, но не в сборке выпуска.

Тем не менее, файл .mak содержит:

 ....
INCDIRS := ....
$(ProjectDir)inc/A 
$(ProjectDir)inc/B 
$(ProjectDir)inc/util/html
  

Таким образом, даже если /inc/util/html указан как каталог включения в .mak, проект не может его найти — но только в сборке выпуска.

Я не вижу условного поведения между сборками debug и relase — файлы заголовков включены в исходный код независимо от конфигурации сборки. И приведенный выше фрагмент является единственным местом в файле .mak, где указаны включаемые каталоги.

Итак, почему должна быть разница между сборками debug и сборками release?

Есть идеи?

Спасибо

Комментарии:

1. Каковы шансы, что вы на самом деле создаете с помощью собственной системы сборки MSVC вместо файла .mak? У вас есть файл .sln.

2. Если я отредактирую файл .mak, т.Е. удалю строку $(ProjectDir)inc/B , тогда он не сможет найти ни один из заголовочных файлов в inc / B — значит, используется файл .mak.

3. Посмотрите на свое решение. У вас действительно есть проект Makefile, определенный в нем?

4. .mak виден в обозревателе решений, если вы это имеете в виду. Если нет, что я должен проверить?