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

Замечания для пользователей Windows

Введение

Существует несколько важных различий между операционными системами 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:

MSVC:

Cygwin:

Убедитесь, что:

Сборка и использование CppCMS в Visual Studio

Visual Studio - единственный существующий компилятор у которого несовместимы debug и release библиотеки времени выполнения и требующий их раздельную компиляцию и линковку.

Т.о. чтобы корректно собрать CppCMS, убедитесь:

Моя личная рекомендация - создать набор 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

Это должно значительно упростить вашу жизнь.


Поиск неисправностей | Наверх | Hello World

Проект

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

Размещение

SourceForge.net Logo

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

CppCMS needs You


Навигация

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



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