Главная  /  Правка версии 3  /  Правка версии 4  /   /  Область пользователей

Отличия "Замечания для пользователей Windows" вер. 3 сравн. вер. 4

Содержимое:

<!--toc-->
## Введение
Существует несколько важных различий между операционными системами Windows и POSIX, которые могут влиять на работу.
1. Использование DLL вместо общих объектов ELF
2. Версии Debug и Release для MSVC
## Использование DLL
Прежде всего, я настоятельно рекомендую использовать CppCMS как DLL вместо статических библиотек:
1. Он позволяет использовать динамически загружаемые view
2. Он позволяет вам переключать версию dll CppCMS без перекомпиляции приложения, например, из-за обновления безопасности.
3. Это упрощает обработку зависимостей, например, вы не должны вручную линковаться с zlib, pcre и необязательным openssl или ICU.
## Компиляция
Когда вы компилируете свою программу для использования DLL, вы должны добавить define `DLL_EXPORT` на уровне вашего проекта. Таким образом,
код будет скомпилирован с этим define.
Он должен быть определен для _всех_ исходных файлов _включая_
динамически загружаемые view.
При использовании компилятора Visual C++, убедитесь, что
используете "Enable C++ Exceptions", установив аргумент командной строки `/EHsc`.
cl /EHsc -DDLL_EXPORT app.cpp cppcms.lib booster.lib
## Соглашение об именах библиотек
По умолчанию собираются и статические библиотеки и DLL
с библиотеками импорта, у них есть следующая конвертация имен:
GCC/MinGW:
- `libcppcms.dll` и `libbooster.dll` - DLL
- `libcppcms.dll.a` и `libbooster.dll.a` - импортируемые библиотеки для DLL
- `libcppcms.dll.a` и `libbooster.dll.a` - библиотеки импорта для DLL
- `libcppcms.a` и `libbooster.a` - статические библиотеки
MSVC:
- Release-версии
- `cppcms.dll` и `booster.dll` - DLL
- `cppcms.lib` и `booster.lib` - импортируемые библиотеки для DLL
- `cppcms.lib` и `booster.lib` - библиотеки импорта для DLL
- `libcppcms.lib` и `libbooster.lib` - статические библиотеки
- Debug-версии
- `cppcms-d.dll` and `booster-d.dll` - DLL
- `cppcms-d.lib` and `booster-d.lib` - импортируемые библиотеки для DLL
- `cppcms-d.lib` and `booster-d.lib` - библиотеки импорта для DLL
- `libcppcms-d.lib` and `libbooster-d.lib` - статические библиотеки
Cygwin:
- `cygcppcms-1.dll` и `cygbooster-0.dll` - DLL
- `libcppcms.dll.a` и `libbooster.dll.a` - импортируемые библиотеки для DLL
- `libcppcms.dll.a` и `libbooster.dll.a` - библиотеки импорта для DLL
- `libcppcms.a` и `libbooster.a` - статические библиотеки
Убедитесь, что:
- Не смешиваете статические и импортируемые библиотеки
- Не смешиваете статические и библиотеки импорта
- Не смешиваете библиотеки debug и release при использовании компилятора Visual C++.
## Сборка и использование CppCMS в Visual Studio
Visual Studio - единственный существующий компилятор
у которого несовместимы debug и release библиотеки времени выполнения
и требующий их раздельную компиляцию и линковку.
Т.о. чтобы корректно собрать CppCMS, убедитесь:
- Что используете nmake-файлы CMake генератора и не используете Visual Studio Projects
- Что у вас есть все зависимые библиотеки (icu, zlib, pcre, openssl) собранные с соответствующей debug и release версией.
- Что запускаете две независимые компиляции - одну для debug и одну для release.
Моя личная рекомендация - создать набор debug
и release библиотек в некотором месте, например:
c:\apps\debug
c:\apps\debug\include
c:\apps\debug\lib
c:\apps\debug\bin
Со всеми debug версиями библиотек типа pcre, zlib и т.д., например `c:\apps\debug\bin\pcred.dll`
И то же самое для release:
c:\apps\release
c:\apps\release\include
c:\apps\release\lib
c:\apps\release\bin
Т.о. pcre.dll переходит в `c:\apps\release\bin\pcre.dll`
И затем запускаем две раздельных сборки:
Для debug, открываем терминал и запускаем:
cd z:\mybuilds\cppcms-1.0.1\
mkdir Debug
cd Debug
set PATH=c:\apps\debug\bin;%PATH%
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INCLUDE_PATH=c:/apps/debug/include
-DCMAKE_LIBRARY_PATH=c:/apps/debug/lib
-DCMAKE_INSTALL_PREFIX=c:/apps/debug
..
nmake
nmake test
nmake install
Затем делаем то же самое для release - открываем **отдельный** терминал
и запускаем:
cd z:\mybuilds\cppcms-1.0.1\
mkdir Release
cd Release
set PATH=c:\apps\release\bin;%PATH%
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INCLUDE_PATH=c:/apps/release/include
-DCMAKE_LIBRARY_PATH=c:/apps/release/lib
-DCMAKE_INSTALL_PREFIX=c:/apps/release
..
nmake
nmake test
nmake install
Это должно значительно упростить вашу жизнь.
---
← [Поиск неисправностей][prev]
| [ Наверх](#maincontent)
| [Hello World][next] →
[prev]: /wikipp/en/page/ccppcms_1x_build_troubleshooting
[next]: /wikipp/en/page/cppcms_1x_tut_hello

Проект

CppCMS является основой веб-разработки для выполнения ресурсоемких приложений.

Размещение

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Навигация

Главная страница


Валидация CSS | Валидация XHTML 1.0