Поделиться через


Практическое руководство. Организация выходных файлов проекта для построения

Обновлен: Ноябрь 2007

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

Создание ссылок на сборки среды CLR

Создание ссылок на сборки с помощью директивы #using

  • Ссылаться на сборку можно непосредственно из кода с помощью директивы #using, например #using <System.Data.dll>. Дополнительные сведения см. в разделе The #using Directive.

    Указанный файл может быть файлом .dll, .exe, .netmodule или .obj, но это должен быть на языке MSIL. Построение компонента, на который делается ссылка, может производиться на любом языке. При использовании этого параметра обеспечивается доступ к Intellisense, так как метаданные извлекаются из кода MSIL. Рассматриваемый файл должен располагаться в каталоге проекта; в противном случае компиляция проекта окажется невозможной, а функция Intellisense будет недоступна. Чтобы определить, располагается ли данный файл в этом каталоге, можно просто щелкнуть правой кнопкой мыши строку #using и выбрать команду Открыть документ. .Если файл найти не удалось, появится уведомление.

    Чтобы не указывать полный путь к файлу, можно воспользоваться параметром компилятора /AI и изменить путь поиска для ссылок #using. Дополнительные сведения см. в разделе /AI (указание каталогов метаданных).

Создание ссылок на сборки с помощью параметра /FU

  • Вместо создания прямой ссылки на сборку из файла кода описанным выше способом можно воспользоваться параметром компилятора /FU. Преимуществом данного метода является отсутствие необходимости добавления отдельного оператора #using в каждый файл, ссылающийся на данную сборку.

    Чтобы установить этот параметр, откройте окно Страницы свойств проекта. Последовательно разверните узлы Свойства конфигурации,C/C++ и выберите Дополнительно. Добавьте необходимые сборки в поле Принудительное #using. Дополнительные сведения см. в разделе /FU (именование файла с принудительно используемым атрибутом #using).

Создание ссылок на сборки с помощью команды "Добавить новую ссылку"

  1. Это самый простой способ использования сборок CLR. Сперва необходимо убедиться, что при компиляции проекта использовался параметр компилятора /clr. Затем в обозревателе решений щелкните правой кнопкой мыши проект и в контекстном меню выберите пункт Ссылки. Откройте диалоговое окно Страницы свойств.

  2. В окне Страницы свойств выберите Добавить новую ссылку. Появится диалоговое окно со списком сборок .NET, COM и других сборок, доступных в текущем проекте. Выберите требуемую сборку и нажмите кнопку ОК. Дополнительные сведения см. в разделе Диалоговое окно "Добавление ссылки".

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

Создание ссылок на неуправляемые библиотеки DLL или статические библиотеки

Создание ссылок на неуправляемые библиотеки DLL или статические библиотеки

  1. Создайте ссылку в коде на соответствующий заголовочный файл с помощью директивы #include. Заголовочный файл должен быть включен в путь включаемых файлов или входить в текущий проект. Дополнительные сведения см. в разделе The #include Directive.

  2. Кроме того, можно задать зависимости проекта. Задание зависимостей проекта позволяет гарантированно достичь двух целей. Во-первых, оно обеспечивает правильный порядок построения проектов, так что проект всегда может найти нужные зависимые файлы. Во-вторых, каталог выходных файлов зависимого проекта неявным образом добавляется в путь, что обеспечивает быстрое нахождение файлов на этапе компоновки.

  3. Для развертывания приложения библиотеку DLL необходимо разместить в соответствующем месте. Допустим один из следующих вариантов размещения.

    1. Каталог размещения исполняемого файла.

    2. Системный файловый путь (переменная среды path).

    3. Параллельная сборка. Дополнительные сведения см. в разделе Построение параллельных сборок C/C++.

Работа с несколькими проектами

По умолчанию при построении проектов все выходные файлы создаются в подкаталоге каталога проекта. Имя этого каталога зависит от конфигурации построения (например, Debug или Release). Чтобы родственные проекты могли ссылаться друг на друга и компоновка могла быть осуществлена успешно, в путь каждого проекта необходимо явным образом добавить выходные каталоги других проектов. Эта операция производится автоматически при установке зависимостей проекта. Однако если зависимости не используются, необходимо соблюдать осторожность, поскольку управление построением может стать крайне сложным. Например, если для проекта используются конфигурации "Debug" и "Release" и в него включена внешняя библиотека из родственного проекта, должны использоваться разные файлы библиотеки в зависимости от того, какая конфигурация используется при построении. Таким образом, жесткое задание путей в коде может таить в себе значительные трудности.

Начиная с Visual C++ 2005, все основные выходные файлы (например, исполняемые файлы, файлы инкрементного компоновщика и PDB-файлы) копируются в общий каталог решения. Таким образом, при работе с решением, содержащим ряд проектов C++ с одинаковой конфигурацией, все выходные файлы хранятся централизовано, что упрощает компоновку и развертывание. Если эти файлы хранятся вместе, можно быть уверенным, что приложение или библиотека будет работать соответствующим образом (поскольку файлы гарантировано располагаются по данному пути).

Расположение выходных файлов может представлять значительную проблему при развертывании в рабочей среде. При запуске проекта в интегрированной среде разработки пути к включенным библиотекам не обязательно совпадают с путями, используемыми в рабочей среде. Например, если в коде имеется путь #using "../../lib/debug/mylib.dll", но при развертывании файл mylib.dll помещается в другое относительное положение, возникнет сбой приложения периода выполнения. Во избежание этого не следует использовать относительные пути в операторах #include в коде. Правильнее будет обеспечить нахождение требуемых файлов в каталоге, соответствующем пути построения проекта, и правильное размещение соответствующих рабочих файлов.

Указания места размещения выходных файлов

  • Параметры размещения выходных файлов проекта указываются в окне Страницы свойств проекта. Разверните узел Свойства конфигурации и выберите Общие. Местоположение выходных файлов указывается в поле Выходной каталог. Дополнительные сведения см. в разделе Страница свойств "Общие" (проект).

См. также

Основные понятия

Проекты Visual C++