Сборка проекта производится при помощи системы Omake: http://omake.metaprl.org/index.html. Программу можно скачать как по указанной ссылке, так и из репозитория Йокселя: http://yoksel.cvs.sourceforge.net/yoksel/Omake/
Требуемые компоненты для сборки:
Сборка проекта и вспомогательных библиотек производится из консоли. При этом должен быть установлен ряд переменных окружения – пути к заголовкам, библиотекам, компилятору, линкеру и т.д.
После установки Студии 2005 в каталоге «D:\Program Files\Microsoft Visual Studio 8\Common7\Tools» уже будет файл vsvars32.bat, который при запуске установит часть нужных переменных окружения. Однако он содержит настройки «свежеустановленной» Студии. Однако для сборки нужно, чтобы пути были настроены так, как указано ниже. Поэтому в этом файле придется вручную отредактировать настройку переменных INCLUDE и LIB.
Include files:
D:\STLPort\STLport-5.1.5\stlport (путь к заголовкам STLport)
D:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include (заголовки нового PSDK)
D:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc (заголовки нового PSDK)
D:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl (заголовки нового PSDK)
D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include (заголовки VS2005)
C:\Program Files\Microsoft Visual Studio\VC98\Include (заголовки VS6)
D:\Program Files\DevStudio\MyProjects\CPPUnit\cppunit-1.12.0\include (заголовки CppUnit для сборки проекта с тестами)
D:\Boost\boost_1_35_0 (заголовки Буста)
Library files:
D:\STLPort\STLport-5.1.5\lib (библиотеки STLport)
C:\Program Files\Microsoft Visual Studio\VC98\Lib (библиотеки VS6)
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib (библиотеки MFC из VC6)
D:\VS2005Proj\cppunit-1.12.0\lib (библиотеки CppUnit для сборки проекта с тестами)
D:\Boost\boost_1_35_0\stage\lib (библиотеки Буста)
D:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib (библиотеки New PSDK)
Как можно видеть, используются некоторые заголовки и библиотеки от VS6. Это необходимо для совместимости с 1С, которая тоже использует эти библиотеки.
Дополнительно к переменным INCLUDE и LIB необходимо к переменной PATH добавить путь к каталогу bin программы Omake.
Оставшаяся часть переменных окружения устанавливается запуском файла «C:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin\iclvars.bat».
Можно написать специальный bat-файл, который будет вызывать два вышеуказанных.
После запуска в консоли этих двух файлов будет возможность собирать проект и дополнительные библиотеки.
Настройка каких-либо путей непосредственно в Студии не требуется.
Ссылка для скачивания: http://download.microsoft.com/download/9/7/a/97a5ac16–69ae-4672-b93e-40d66d77b278/5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm.img Около 400Мб. При особом желании можно обойтись без нового Platform SDK. Во всяком случае, есть такая надежда.
STLport необходимо собрать при помощи компилятора Intel. В проекте используется вариант библиотек STLport, статически линкующийся к конечному файлу, но с динамической линковкой с runtime-библиотеками VC++. В исходной поставке STLport такой вариант сборки для компилятора Intel не предусмотрен, но его можно включить небольшой модификацией файла configure.bat.
Если используется New PSDK, то при сборке должны быть установлены следующие опции препроцессора: _STLP_NEW_PLATFORM и _STLP_USING_PLATFORM_SDK_COMPILER. Установить их можно либо при помощи редактирования файла stlport\stl\config\user_config.h (раскомментарить нужные переменные) или при запуске сборки STLport.
Сборка происходит в каталоге «build\lib». Сначала запускаем «конфигуратор» (не 1С):
Затем саму сборку:
Библиотеки Буста подразделяются на заголовочные (сборка не нужна) и обычные (требуется сборка). В настоящее время используются следующие, требующие сборки, библиотеки из Буста:
Сначала нужно собрать bjam – утилиту, которая выполняет сборку Буста. Переходим в каталог tools\jam\src и запускаем команду:
После этого в каталоге bin.ntx86 появится файл bjam.exe. Для удобства переписываем его в корневой каталог Буста.
Теперь из корневого каталога Буста запускаем следующую команду:
После сборки в каталоге stage\lib появится набор библиотек. Теперь произведем небольшие переименования. Переименовывать нужно файлы с именами вида libboost_signals-iw-mt-1_35.lib. Имена надо давать такие: libboost_signals-iw-mt-p-1_35.lib. Т.е. переименовываем файлы, которые начинаются на lib и содержат номер версии – добавляем последовательность -p. Более прямой способ сборки Буста, который не требует переименования описан здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1202267316
Если вы используете Буст версии, отличной от 1.35.0, то для корректной сборки проекта с тестами исходники библиотеки boost::signals нужно поместить в каталог Tests/boost/signals, а исходники boost::program_options в каталог Tests/boost/program_options.
Пакет, используемый для юнит-тестирования. Необходимо только для сборки проекта с тестами. CppUnit нужно собрать. Пакет использует STL, поэтому для его сборки необходим уже собранный STLport. Для сборки нужно использовать Студию 2005. В Студии нужно открыть dsw-файл CppUnit и сконвертировать его в формат VS2005. Для сборки нам нужен проект cppunit в Release-варианте. Предварительно нужно сделать следующие настройки в проекте:
На выходе получим lib-файл, путь к которому нужно прописать в настройках Студии (см. выше).
В проекте включена опция «/Zc:forScope", что означает, что переменные цикла выходят из области действия в конце цикла. Эта опция вызывает ошибку компиляции в одном месте одного заголовка ATL. Там нужно поправить заголовок вручную. Также могут вылезать некоторые ошибки с макросами в заголовках PSDK – их тоже придется исправить вручную (к счастью, это нетрудно).
В проект с тестами включены библиотеки boost::signals и boost::prorgam_options в виде исходных файлов. Если для сборки вы используете Буст версии, отличной от версии, используемой Йокселем, то необходимо обновить исходные файлы Буста.
В каждый cpp-файл нужно добавить строку "#include StdAfx.h или выставить в опциях компилятора автоматическое включение StdAfx.h в эти файлы. Также из каталога «boost/libs нужно скопировать каталог в detail в каталог program_options проекта. Соответственно новому положению каталога detail нужно исправить включение файла utf8_codecvt_facet.cpp в файле «program_options/utf8_codecvt_facet.cpp.
Сборка проекта происходит из командной строки с правильно настроенным окружением (см. выше). Сборку нужно производить из корневого каталога проекта. Допустимы следующие команды:
omake v7addin_debug | Внешняя компонента для 1С:Предприятия 7.7 (отладочная версия) |
omake v7addin_release | Внешняя компонента для 1С:Предприятия 7.7 (релизная версия) |
omake stand_alone_debug | Самостоятельное приложение (отладочная версия) |
omake stand_alone_release | Самостоятельное приложение (релизная версия) |
omake v7addin_tests_debug | Внешняя компонента для 1С:Предприятия 7.7 с тестами (отладочная версия) |
omake v7addin_tests_release | Внешняя компонента для 1С:Предприятия 7.7 с тестами (релизная версия) |
omake com_server_debug | COM-сервер (отладочная версия) |
omake com_server_release | COM-сервер (релизная версия) |
omake com_server_doc | Справка по COM-серверу (CHM-файл). |
У каждой из команд допускается наличие следующих суффиксов:
Например, команда omake v7addin_debug_clean удалит промежуточные файлы, которые были созданы при сборке отладочной версии компоненты для 1С:Предприятия 7.7. Команда stand_alone_release_install произведет установку релизной версии самостоятельного приложения. Установка файлов производится следующим образом:
Также сборку можно производить из Visual Studio 2005. В Студии созданы конфигурации, аналогичные конфигурациям omake. Перед сборкой необходимо правильно отредактировать файлы build.cmd и clean.cmd в корневом каталоге проекта – в этих файлах необходимо прописать правильную настройку окружения (PATH, LIB, INCLUDE).
Если для сборки используется многоядерный или многопроцессорный компьютер, то для omake можно включить многопоточный режим сборки. Для этого следует использовать ключ -j колво_потоков. В качестве количества потоков лучше установить значение большее, чем количество ядер/процессоров, в 1,5 – 2 раза. Если проект собирается при помощи Visual Studio, то не забудьте соответственно отредактировать файл build.cmd. В настоящее время там установлено значение для четырехядерной системы. Если у вас другое количество ядер, то вам стоит изменить количество потоков в сторону увеличения или уменьшения.
При сборке COM-сервера используется исправленная библиотека Comet. Путь к заголовкам библиотеки нужно добавить в переменную окружения INCLUDE. Заголовки находятся в подкаталоге Comet/include.
Для сборки документации к COM-серверу используется компилятор файлов HTML-справки (hhc.exe). Если по каким-то причинам его у вас нет и сборка справки не производится, то необходимо установить HTML Help Workshop и прописать путь к файлу hhc.exe в переменную PATH.