Чтение онлайн

на главную

Жанры

C++. Сборник рецептов

Когсуэлл Джефф

Шрифт:

В меню File выберите New→Project. В диалоге New project (Новый проект) выберите DLL и C++ Project, а в качестве имени проекта введите libgeorgeringo. После нажатия на OK укажите место для сохранения настроечных файлов проекта.

Затем, чтобы отобразить диалог Project Options, в меню Project выберите Project Option. Затем перейдите к Build Options и проверьте, что в качестве имени выходного файла проекта указано libjohnpaul.dll. В поле Executable output directory (Директория для записи исполняемого файла) введите путь к директории binaries. Если

хотите, то в поле Object file output directory (Директория для записи объектных файлов) можно указать директорию для создания объектных файлов.

Теперь определите макрос

GEORGERINGO_DLL
, как описано в рецепте 1.19.

Наконец удалите из проекта все существующие исходные файлы, сделав щелчок правой кнопкой мыши и выбрав Remove file. Для сохранения настроечного файла проекта libgeorgeringo.dev используйте Save Project as из меню File. Затем, чтобы добавить в проект исходные файлы из примера 1.2, используйте Add to project (Добавить в проект) из меню Project. Соберите проект, в меню Execute выбрав Compile, и проверьте, что в директории binaries был создан файл с именем libjohnpaul.a.

Смотри также

Рецепты 1.4, 1.9, 1.17, 1.19 и 1.23.

1.13. Сборка сложного приложения с помощью IDE

Проблема

Вы хотите использовать IDE для сборки исполняемого файла, зависящего от нескольких статических и динамических библиотек.

Решение

Основная процедура выглядит следующим образом.

1. При сборке из исходного кода библиотек, от которых зависит исполняемый файл, при том, что они не имеют своих собственных проектов IDE или make-файлов, создайте для них проекты, как описано в рецептах 1.11 и 1.12.

2. Создайте новый проект и укажите, что требуется собрать исполняемый файл, а не библиотеку.

3. Выберите конфигурацию сборки (т.е. отладочную или окончательную версию и поддержку или отсутствие поддержки многопоточности).

4. Укажите имя исполняемого файла и директорию, в которой он должен быть создан.

5. Добавьте в проект исходные файлы.

6. Скажите компилятору, где искать заголовочные файлы библиотек.

7. Скажите компоновщику, какие библиотеки требуется использовать и где их искать.

8. Если IDE поддерживает группы проектов, добавьте все проекты, указанные выше, в единую группу и укажите зависимости между ними.

9. Если IDE поддерживает группы проектов, соберите группу, созданную на шаге 8. В противном случае соберите проекты по отдельности, обращая внимание на последовательность их сборки с целью соблюдения зависимостей.

Как и в рецептах 1.11 и 1.12, шаги в этой процедуре будут различаться в зависимости от IDE. Третий шаг подробно описывается в рецептах 1.21, 1.22 и 1.23. А сейчас вы, насколько это возможно, должны использовать параметры по умолчанию.

Например, вот как надо собирать исполняемый файл из исходных файлов из примера 1.3 с помощью Visual C++ IDE.

В меню File выберите New→Project, в левой панели выберите Visual С++ [4] , выберите Win32 Console Application и в качестве имени проекта введите hellobeatles. В мастере Win32 Application Wizard перейдите к Application Settings, выберите Console Application (Консольное приложение)

и Empty Project (Пустой проект) и нажмите на Finish. Теперь у вас должен иметься пустой проект hellobeatles.vcproj с двумя конфигурациями сборки — Debug и Release, и первая будет активной. Также у вас должно быть решение hellobeatles.sln, содержащее один проект hellobeatles.vcproj.

4

В версиях Visual C++ до Visual C++ 2005 эта опция называлась Visual C++ Projects.

Затем, сделав щелчок правой кнопкой мыши на Solution Explorer и выбрав Properties, отобразите страницы свойств проекта. Перейдите в раздел Configuration Properties (Свойства конфигурации)→Linker (Компоновщик)→General (Общие) и в поле с именем Output File (Выходной файл) введите имя и путь выходного файла проекта. Директория этого пути должна указывать на директорию binaries, созданную в начале этой главы, а имя файла должно быть hellobeatles.exe.

Затем, чтобы добавить в проект исходный файл hellobeatles.cpp из примера 1.3, используйте Add Existing Item (Добавить существующий элемент) из меню Project. Теперь страницы свойств проекта должны содержать узел с именем «C/C++». Перейдите к Configuration Properties→C/C++→Code Generation (Генерация кода) и укажите в качестве библиотеки времени выполнения Multi-threaded Debug DLL (многопоточная отладочная динамическая библиотека).

Вместо использования опции Add Existing Item, добавляющей в проект исходные файлы из примера 1.1, можно использовать Add New Item (Добавить новый элемент), добавляющую в проект пустые исходные файлы. После этого во вновь созданные файлы требуется ввести или вставить через буфер обмена содержимое из примера 1.1. Аналогичные замечания действительны и для других IDE.

Затем перейдите к Configuration Properties→C/C++→General и в поле редактирования с именем Additional Include Directories (Дополнительные директории заголовочных файлов) введите директорию, которая содержит директории johnpaul и georgeringo, — директорию, являющуюся «дедушкой» по отношению к файлам john.hpp, ringo.hpp и другим. Это позволит корректно разрешить директивы

include
в заголовочном файле hellobeatles.hpp.

Далее, используя Add→Existing Project… (Существующий проект…) из меню File добавьте в решение hellobeatles файлы проектов libjohnpaul.vcproj и libgeorgeringo.vcproj. Чтобы отобразить диалог Project Dependencies… (Зависимости проектов…), в меню Project выберите Project Dependencies. В раскрывающемся списке выберите hellobeatles и щелкните на флажках рядом с libjohnpaul и libgeorgeringo.

Поделиться:
Популярные книги

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Метаморфозы Катрин

Ром Полина
Фантастика:
фэнтези
8.26
рейтинг книги
Метаморфозы Катрин

Охота на разведенку

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
6.76
рейтинг книги
Охота на разведенку

Я до сих пор не князь. Книга XVI

Дрейк Сириус
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я до сих пор не князь. Книга XVI

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

"Малыш"

Рам Янка
2. Девочка с придурью
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Малыш

Мастер Разума II

Кронос Александр
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Мастер Разума II

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Счастливый торт Шарлотты

Гринерс Эва
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Счастливый торт Шарлотты

Назад в СССР: 1984

Гаусс Максим
1. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
4.80
рейтинг книги
Назад в СССР: 1984

Не грози Дубровскому! Том IX

Панарин Антон
9. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том IX

Секретарша генерального

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
Секретарша генерального

Газлайтер. Том 2

Володин Григорий
2. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 2

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов