Как я могу добраться, MIDL для поиска дополнительный включают каталоги для квалифицированных путей

Обновление: Чуть спустя более чем шесть месяцев после открытия обращения за поддержкой к Microsoft это было отклонено, они утверждают, что это не ошибка (так как в документации явно не говорится, что замеченное поведение не является корректным). Они отклонили DCR, говорящий что, так как они не услышали жалоб за прошлые 10 лет, это - очевидно, не случай общего использования.

Это - призыв к оружию при столкновении с той же проблемой откройте обращение за поддержкой с Microsoft, таким образом, они понимают, что это должно быть зафиксировано. Я знаю, что по крайней мере кто-то столкнулся с той же проблемой becasue, я нашел этот комментарий в исходном коде Chrome:

# Здание .idl файлы.
# Это - общая путаница. MIDL должен быть выполнен от $OPEN_DIR, потому что это также
# глупый применить включать пути к относительному пути как "ui/ie/bla.idl"
# (это только смотрит в текущем dir). Таким образом, мы должны перейти через обручи для фиксации
# наш родственник включает пути и выходные файлы.


Исходный вопрос:

У меня есть следующая файловая структура:

  • C:\first\Foo.idl
  • C:\second\Bar.idl

Где Bar.idl содержит следующую строку:

import "first/Foo.idl";

Как я могу заставить midl компилировать Bar.idl при компиляции от C:\second?

Если я импортировал Foo.idl непосредственно (без определения first/) затем определение first как дополнительное включают каталог, был бы достаточно (midl /I c:\first Bar.idl) и это нашло бы Foo.idl

Поочередно, если я компилировал от C:\ (midl second\Bar.idl) это было бы в порядке также.

Проблема - это при компиляции из C:\second с командной строкой midl /I C:\ Bar.idl, Я получаю следующую ошибку компиляции:

c1: фатальная ошибка C1083: не Может файл с открытым исходным кодом: 'first\Foo.idl': Никакой такой файл или каталог

Похоже, что midl готов искать относительные пути, только если они относительно текущего каталога, а не к одному из указанных дополнительных включают каталоги, и использует дополнительное, включают каталоги только для неполных имен файлов, это поведение характерно для import ключевое слово, с помощью include результаты как ожидалось.

Я хотел бы смочь добавить, что два различных дополнительных включают каталоги так, чтобы, если у меня есть файл на моей локальной машине, midl взял ту версию, иначе это возьмет файл с сервера (так chdirлуг к корневой папке не является опцией).

Существует ли способ обойти это?

10
задан Motti 3 March 2010 в 21:15
поделиться