Skip to content
Official Diadoc SDK for C++
C++ PowerShell C# CMake C Shell Batchfile
Branch: master
Clone or download
zharkovstas Merge pull request #97 from zharkovstas/dss
Add DssSign and DssSignResult
Latest commit 0fce0ab Sep 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake add msvc precompiled headers support to improve compilation speed May 30, 2016
proto
src Add DssSign and DssSignResult Sep 18, 2019
third-party change cmake error() to message(fatal_error) Jun 2, 2016
tools make appveyor build work again Aug 22, 2019
.gitignore fix Cake.CMake assembly versions dependencies Sep 22, 2017
CMakeLists.txt add msvc precompiled headers support to improve compilation speed May 30, 2016
LICENSE.md add license and basic readme May 26, 2016
README.md Update README.md Apr 7, 2017
appveyor.yml add appveyor support Jun 1, 2016
build.cake make appveyor build work again Aug 22, 2019
build.ps1 delete excess build step Sep 22, 2017
build.sh add cake for build orchestration May 26, 2016
generate.bat add license and basic readme May 26, 2016

README.md

Build Status
master Build status (master)
latest Build status (latest)

diadocsdk-cpp

diadocsdk-cpp является официальной C++-реализацией клиента, использующего публичный API Диадока. На данный момент поддерживается только ОС семейства Windows, компиляция с помощью компиляторов Visual Studio С++.

Сборка проектов

Для сборки проекта используется утилита cmake. Инсталлятор можно скачать на официальном сайте. В качестве альтернативы, можно установить утилиту cmake с помощью Chocolatey. В итоге утилита cmake должна находиться в переменной среды PATH, чтобы ее можно было вызвать из командной строки.

Стандартный способ сборки проекта утилитой cmake (старт из корня репозитория):

mkdir tmp
cd tmp
cmake ..
cmake --build .

Видно, что утилита cmake работает в две фазы:

  • cmake .. генерирует файлы solution и проектов для Visual Studio.
  • cmake --build . - запуск сборки проекта из командной строки. Технически, для сборки проекта cmake вызывает msbuild для сгенерированных проектов. Также возможно открыть сгененрированные проекты непосредственно в Visual Studio и компилировать проект из IDE.

Окончательная сборка проекта (CI)

Для окончательной сборки проекта используется утилита Cake.

Запуск powershell-скрипта build.ps1 скачает утилиту Cake, если ее у вас нет, и запустит сборку проекта. Из командной строки этот скрипт можно запустить с помощью generate.bat.

Выполняется:

  • генерация проектов Visual Studio с помощью утилиты cmake
  • сборка компилятора protoc
  • компиляция proto-файлов
  • компиляция DiadocApi

Сборка для различных платформ

cmake умеет генерировать solution и проекты для разных версий Visual Studio, для разных архитектур (x86, x64, ARM). Генератор и тулсет можно регулировать с помощью параметров командной строки build.ps1.

Пример генерации проектов Diadoc C++ SDK для Visual Studio 2013, для 64-битной платформы, с использованием компилятора, генерирующего исполняемые файлы с возможностью запуска в Windows XP:

PS> .\build.ps1 -Generator "Visual Studio 12 2013" -Toolset v120_xp

64-битные сборки официально не поддерживаются

Хоть утилита cmake и позволяет сгенерировать solution и проекты для 64-битных платформ (Н: с помощью генератора Visual Studio 12 2013 Win64), DiadocSDK C++ официально не поддерживает сборку под 64 бита!

Вы можете скомпилировать DiadocSDK C++ под 64 бита на свой страх и риск! Код компилируется, но выдает много предупреждений про конвертацию типов size_t в int, т.е. он не является корректным. Это ограничение связано с тем, что используемая библиотека Google Protobuf v2 не поддерживает сборку под 64 бита. Также компилятор protoc генерирует код, некорректный для использования в 64-битных системах.

Добавление функциональности

  • Сделайте Fork
  • Создайте ветку для новой фичи (git checkout -b my-new-feature)
  • Сделайте Commit изменений (git commit -am 'Add some feature')
  • Сделайте Push новой ветки (git push origin my-new-feature)
  • Создайте новый Pull Request
You can’t perform that action at this time.