This page as PDF

Супер BUILD

Рано или поздно драйверописатель сталкивается с необходимостью использовать в своем проекте чужой код. Обычно, для сборки драйвера используется утилита BUILD, идущая в поставке WDK. Буквально недавно я столкнулся с очевидной проблемой данного инструмента:

С:\path1\path2\path3>build -g
BUILD: Compile and Link for x86
BUILD: Loading c:\winddk\6001\build.dat…
BUILD: Computing Include file dependencies:
BUILD: Start time: Fri Feb 06 15:50:51 2009

errors in directory С:\path1\path2\path3

Ignoring invalid directory prefix in SOURCES= entry: D:\somepath1\somepath2\somepath3\somepath4\somepath5\file.c

Поиск в гугле вывел меня на ветку форума OSR Online:

«Welcome to the wonderful world of BUILD. It can only deal with source code in the same or parent directory of the «sources» file. It cannot use source files from arbitrary locations.»

Таким образом, подключить в свой проект чужие исходные коды по произвольному пути не получится. Выходов из сложившейся ситуации я вижу два:

  1. Чужой код должен быть реализован в виде статической библиотеки. У этого способа есть как очевидные плюсы, так и очевидные минусы. Одним из минусов я считаю то, что разработчику, который пишет код для вас, придется часто собирать эту самую библиотеку или это должна делать build-машина.
  2. Использовать преимущества современных систем управления версиями. Проблема решается выкачиванием нужного проекта в директорию, которая доступна инструменту BUILD. Свою проблему я решил именно так. Конечно, не стоит забывать и о синхронизации выкаченных файлов.

Иногда на форумах появляются вопросы, в которых люди спрашивают можно ли управлять инструментом BUILD. В MSDN есть отдельный раздел, посвященный этой утилите: Win32 and COM Development -> Windows Driver Kit -> Driver Development Tools -> Tools for Building Drivers -> Build. Подраздел Build Utility Macros самый интересный.

Читайте также:

  • Share/Bookmark

8 comments to Супер BUILD

  • n0name

    сталкивался с таким.
    после этого отказался от использование build’a.

    • admin

      Вот меня пока все устраивает в build, кроме такого ограничения. Согласен, что можно собирать другими средствами.

  • Ск4ыр

    Да, есть такое. Или юзать студию, или создавать в директории с прожектом симлинки к нужной локации.

    • SWW

      Да, приходится делать какие-то дополнительные телодвижения. Может петицию в MS? :) Пусть допилят build.

      • Ск4ыр

        Это, кстати, не совсем в build-е дело: он ведь просто надстройкой над nmake является.

        • SWW

          Кстати, да!!! nmake’и разные бывают, и этот, насколько я помню, MS-овский. Самый хреновый из всех, которые я видел.

  • Увлекательно написано! Надобыотметить на БобрДобр. :)

  • Ага, на самом деле все очень просто :)

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">