Создание проекта

Прежде чем создать проект, необходимо скомпилировать сам движок. Рекомендуется скомпилировать несколько вариантов движков: один с полным набором функций, для того что бы запускать на нём, ваши скрипты и пользоваться редактором Editor, и еще один или несколько с определённым набором функций (например если в Вашей игре не нужна сеть, то мы и компилируем движок без поддержки сети), для того чтобы уменьшить размер готовой игры.

## Подготовка. Копирование и создание нужных файлов, каталогов.

1. Создайте каталог проекта (напр. **SimpleProject**).

2. Скопируйте из каталога движка, каталог **CMake**/ и файл **cmake\_generic.bat** (или **\*.sh** для \*nix систем). Также, если Вам необходимо сгенерировать проект для конкретной(ых) цели (например для работы в IDE codeblocks), то скопируйте еще файлы с нужным названием **cmake\_\*.bat** / **cmake\_\*.sh**.

3. В корневом каталоге проекта создайте также каталог **bin**, в нём еще 2 каталога: **Data** и **CoreData**. Оба каталога **Data** и **CoreData**, Вы можете скопировать из каталога **bin** движка, что бы иметь базовый набор данных для проекта.

4. Создайте в папке проекта текстовый файл **CMakeLists.txt** со следующим содержимым:

```
# Define target name
set (TARGET_NAME SimpleProject)

######################################

# Set minimum version
cmake_minimum_required (VERSION 2.8.6)
if (COMMAND cmake_policy)
    cmake_policy (SET CMP0003 NEW)
    if (CMAKE_VERSION VERSION_GREATER 2.8.12 OR CMAKE_VERSION VERSION_EQUAL 2.8.12)
        # INTERFACE_LINK_LIBRARIES defines the link interface
        cmake_policy (SET CMP0022 NEW)
    endif ()
    if (CMAKE_VERSION VERSION_GREATER 3.0.0 OR CMAKE_VERSION VERSION_EQUAL 3.0.0)
        # Disallow use of the LOCATION target property - therefore we set to OLD as
        # we still need it
        cmake_policy (SET CMP0026 OLD)
        # MACOSX_RPATH is enabled by default
        cmake_policy (SET CMP0042 NEW)
    endif ()
endif ()
# Set CMake modules search path
set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
# Find Urho3D library
find_package (Urho3D REQUIRED)
include_directories (${URHO3D_INCLUDE_DIRS})
# Setup target with resource copying
setup_main_executable ()

```

Название **SimpleProject** необходимо изменять на имя Вашего проекта. В этом примере оно останется без изменений.

5. В корневом каталоге создавайте файлы с исходным кодом.

Для примера создайте файл **main.cpp** со следующим содержимым:

```

#include <Urho3D/Engine/Application.h>

// Чтобы везде не писать Urho3D::ИмяТипа.
using namespace Urho3D;

// Главный класс игры.
class Game : public Application
{
    // Макрос добавляет в класс информацию о текущем и базовом типе.
    URHO3D_OBJECT(Game, Application);

public:
    // Конструктор класса.
    Game(Context* context) : Application(context)
    {
    }
};

// Указываем движку главный класс игры.
URHO3D_DEFINE_APPLICATION_MAIN(Game)

```

Или можете взять отсюда.

6. В итоге должна получится такая структура:

```
<PROJECT_ROOT>/
├ bin/
│ ├ Data/
│ └ CoreData/
├ CMake/
│ ├ Modules/
│ └ Toolchains/
├ CMakeLists.txt
├ *.cpp и *.h
└ *.bat или *.sh

```

## Подготовка к сборке

### **Путь первый**: консольный

Используйте целевой скриптовый файл для сборки проекта.

Для примера используем скрипт для codeblocks. Скрипту необходимо указать куда будет сгенерирован проект и файл для проекта codeblocks. Также, в моём случае, скрипт потребовал указать **URHO3D\_HOME**, это каталог с предварительно скомпилированным движком. Также необходимо указать те параметры, с которыми был предварительно собран движок. Если в Вашей игре не используется сеть, то и указывается в **URHO3D\_HOME** скомпилированный движок без поддержки сети.

```
user@comp ~/SimpleProject $ ./cmake_codeblocks.sh build -DURHO3D_HOME=/path/to/URHO3D_BUILDTREE -DURHO3D_NETWORK=0

```

Полный список параметров можно посмотреть в документации.

### **Путь второй:** cmake-gui

Открываем cmake-gui. Выбираем каталог с проектом "**Browse Source...**" и путь куда будет сгенерирован проект "**Browse Build...**". Жмём **Configure**.

В открывшемся диалоге выбираем генератор для проекта. Жмём **Finish**.

Во время конфигурации может появится ошибка. Скорее всего необходимо, как и в случае c консолью, необходимо указать **URHO3D\_HOME**. Как и в случае с консолью, необходимо указывать те же настройки, что и при компиляции движка.

Наконец жмём **Generate**.

В итоге получаем в каталоге **build** файл проекта для **codeblocks**.

## Запуск

Созданный на предыдущем шаге файл проекта, открываем в IDE. Выбираем цель "**SimpleProject**" и жмём "**build and run**".

    Так как у нас в примере использовался файл с минимальным приложением, то запустится приложение просто с черным экраном. Закрыть его можно комбинацией клавишь **alt+f4**.