Я почему решил об этом написать? Потому что работаю с C++ уже полгода (не считаю себя классным специалистом, нет), успел его и возненавидеть, и полюбить. Порог входа в этот язык - довольно высок: шишок у начинающих C++ изучать - мама не горюй! И здесь речь не о первой программе типа "Hello world!", хотя и это в C++ - уже достижение :) Собрать проект из исходного кода - то, без чего ни один серьёзный программист сегодня не выживет. И если человек не знает... нет, даже не основ, а (!) подноготной C++, изучение языка может замедлиться (ведь придётся писать и отлаживать свой велосипед) или даже остановиться. Надеюсь, описание процесса сборки проекта от "А" до "Я" поможет Вам в дальнейшем смело включать сторонние библиотеки в свои проекты.
Если бы Daniel Schauenberg - автор Plustache, огромное ему спасибо за труд! - попробовал собрать свой проект под Windows, он бы, наверное, внёс изменения в код. Хотя вряд ли: поддерживать несколько операционных систем - та ещё радость! Тем более, что проект - маленький и с лёгкостью переносится на любые ОС. Прекрасно подходит для обучения.
Итак, соберём Plustache как статическую библиотеку (*.lib) на MS Visual C++ 2010.
I. Получение исходного кода проекта.
Это самый простой этап. Зайдите на https://github.com/mrtazz/plustache, скачайте ZIP-архив проекта, распакуйте содержимое.
II. Подготовка проекта для VC++.
Не было бы печали, если бы rake работал под Windows также, как для OS X. Это не так. Хотя - клянусь! - я поставил для этой цели Ruby.
1. Создание пустого проекта.
Выбираем в меню VC++ "Создать проект / Пустой проект "...
... и в свойствах проекта делаем след. изменения:
- Общие / Тип конфигурации = "Статическая библиотека (.lib)"
- C++ / Общие / Обрабатывать предупреждения как ошибки = "Да" или "Нет" (см. заметку ниже).
2. Копирование файлов.
VC++ поощряет создание проектов, которые заставят помучаться желающих скомпилировать их в другой IDE. Я говорю о файлах *.h и *.cpp, которые при создании из IDE VC++ бросаются в общую папку и т.н. "фильтрах", которыми VC++ мило позволяет пользоваться, но которые не являются папками файловой системы. Файлы Plustache лежат в папках "include", "src" и "tests". Можно пойти на поводу у Microsoft, но здесь вовсе не тот случай, когда мы вынуждены это делать. Поэтому
- Целиком скопируйте папки "include", "src" и "tests" в папку нашего проекта, воспользовавшись Проводником Windows.
- Добавим в VC++ / plustache файлы, (!) за исключением "main.cpp". Будем аккуратны: h-файлы поместим в "Заголовочные файлы", cpp-файлы - в "Файлы исходного кода".
3. Настройка проекта, разрешение зависимостей.
Настроек, сделаных в п.1, недостаточно для сборки, если проект имеет зависимости. Мало какой проект на C++ их не имеет. У Plustache зависимостей две:
Boost
За время изучения C++ я понял, что без Boost'а программиста ждёт безрадостное существование. Если Boost у Вас на компьютере ещё не установлен, сделайте это. Благо, создатели этого фреймворка пошли по пути упрощения и последние версии работают без компиляции. Вообще говоря, когда Вы начали серьёзно работать с C++, существует два ответа на вопрос "Нужно ли устанавливать Boost?": (а) да, сейчас; (б) да, позже.
(!) После установки Boost'а, убедитесь, что переменная окружения "BOOST_ROOT" - открываем Мой компьютер / Свойства / Дополнительно / Переменные среды - установлена и указывает на нужную папку. Например, это может быть папка "C:\boost_Версия".
Если внимательно следовали инструкции по установке, так оно и будет.
Заходим в свойства проекта Plustache и дорисовываем:
- Каталоги VC++ / Каталоги включения / Изменить / Добавить = "$(BOOST_ROOT)"
GoogleTest
Если уже используете эту библиотеку unit-тестирования в других своих проектах (в Boost свой модуль тестирования тоже есть, но также есть жалобы, что библиотека на развивается) - просто добавьте пути к заголовочным файлам, как сделали выше для Boost'а.
Но для Plustache от GoogleTest можно отказаться. Библиотека используется в файлах папки "test". Поэтому просто не добавляйте эти файлы в проект.
4. Устранение ошибок компиляции.
Запускаем компиляцию.
Первая ошибка - компилятор VC++ 2010 не найдёт пути к некоторым своим же файлам включения (#include "include/*.hpp"). Можно Устраняется в свойствах проекта:
- Каталоги VC++ / Каталоги включения / Изменить / Добавить = "Путь к папке, где лежит проект". Например, такой > "D:\Projects\utils\plustache".
Опция "Обрабатывать предупреждения как ошибки" (см. выше) заставляет программиста писать более чистый, быстрый и надёжный код. Для больших библиотек устанавливать эту опцию - лишняя головная боль, т.к. свободный код программисты на Windows пишут редко. Иначе, почему в больших проектах количество предупреждений компилятора - зашкаливает!?
Т.к. Plustache - очень маленькая библиотека, ошибок много исправлять не придётся.
try {
// ...
} catch ( int i ) {
// ...
}
исправляем наtry {
// ...
} catch ( ... ) {
// ...
}
Компилятор покажет где.В общем-то, на этом всё. Статическая библиотека
plustache.lib
создана (компилятор показывает путь, куда её положил) и готова к работе в других проектах под MS Windows. Благодаря тому, что Вы читали внимательно и не добавили в проект Visual C++ файл "main.cpp", не появится предупреждение LNK4006 при использовании plustache.lib
в других проектах :)
Комментариев нет:
Отправить комментарий