Читаем C++. Сборник рецептов полностью

Вначале в директории, где должна быть создана статическая библиотека, создайте make-файл и объявите фиктивную цель all, единственным пререквизитом которой будет статическая библиотека. Затем объявите цель статической библиотеки. Ее пререквизитами должны быть объектные файлы, входящие в состав библиотеки, а ее командный сценарий должен представлять собой командную строку для сборки библиотеки из набора объектных файлов, аналогично показанному в рецепте 1.3. При использовании GCC или компилятора с похожим синтаксисом командной строки настройте, если требуется, неявные правила шаблонов, изменив одну или более переменных CXX, CXXFLAGS и т.п., используемых в базе данных неявных правил make, как показано в рецепте 1.15. В противном случае, используя синтаксис шаблонных правил, описанный в рецепте 1.16, напишите шаблонное правило, говорящее make, как с помощью командной строки из табл. 1.8 компилировать .cpp-файлы в объектные. Далее явно или неявно объявите цели, указывающие, как каждый из исходных файлов библиотеки зависит от включаемых в него заголовков. Эти зависимости можно описать вручную или сгенерировать их автоматически. Наконец, добавьте цели install и clean, как показано в рецепте 1.15.

Например, чтобы с помощью GCC в Unix собрать из исходных файлов, перечисленных в примере 1.2, статическую библиотеку, создайте в директории johnpaul make-файл, показанный в примере 1.20.

Пример 1 20. make-файл для создания libjohnpaul.a с помощью GCC в Unix

# Укажите расширения файлов, удаляемых при очистке

CLEANEXTS - о а

# Укажите целевой файл и директорию установки

OUTPUTFILE = libjohnpaul.a

INSTALLDIR = ../binaries

# Цель по умолчанию

.PHONY: all

all: $(OUTPUTFILE)

# Соберите libjohnpaul.a из john.o. paul.o и johnpaul.с

$(OUTPUTFILE): john.o paul.o johnpaul.о

    ar ru $@ $^

    ranlib $@

# Для сборки john.o, paul.o и johnpaul.о из файлов .cpp

# правила не требуются; этот процесс обрабатывается базой данных

# неявных правил make

.PHONY: install

install:

    mkdir -p $(INSTALLDIR)

    cp -p $(OUTPUTFILE) $(INSTALLDIR)

.PHONY: clean

clean:

    for file in $(CLEANEXTS); do rm -f *.$$file; done

# Укажите зависимости файлов cpp от файлов .hpp

john.o: john.hpp

paul.o: paul.hpp

johnpaul.o: john.hpp paul.hpp johnpaul.hpp

Аналогично, чтобы собрать статическую библиотеку с помощью Visual С++, ваш make-файл должен выглядеть, как показано в примере 1.21.

Пример 1.21. make-файл для создания libjohnpaul.lib с помощью Visual C++

# Укажите расширения файлов, удаляемых при очистке

CLEANEXTS = obj lib

# Specify the target file and the install directory

OUTPUTFILE = libjohnpaul.lib

INSTALLDIR = ./binaries

# Шаблонное правило для сборки объектного файла из файла .cpp

%.obj: %.cpp

    "$(MSVCDIR)/bin/cl" -с -nologo -EHsc -GP -Zc:forScope -Zc:wchar_t \

    $(CXXFLAGS) S(CPPFLAGS) -Fo"$@" $<

# Фиктивная цель

.PHONY: all

all: $(OUTPUTFILE)

# Соберите libjohnpaul.lib из john.obj, paul.obj и johnpaul.obj

$(OUTPUTFILE): john.obj paul.obj johnpaul.obj

    "$(MSVCDIR)/bin/link" -lib -nologo -out:"$@" $^

.PHONY: install

install:

    mkdir -p $(INSTALLDIR)

    cp -p $(OUTPUTFILE) $(INSTALLDIR)

.PHONY: clean

clean:

    for file in $(CLEANEXTS); do rm -f *.$$file; done

# Укажите зависимости файлов .cpp от файлов .hpp

john.obj: john.hpp

paul.obj: paul.hpp

johnpaul.obj: john.hpp paul.hpp johnpaul.hpp

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных