Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
1

Корректность Makefile

29.03.2012, 17:43. Просмотров 753. Ответов 2
Метки нет (Все метки)

Написал на Си программу, которая реализует следующую структуру данных - Сбалансированное Дерево - программа компилируется с использованием статической библиотеки libTree.a которая собирается из трёх объектных файлов, получаемых из трёх "сишных" файлов ForCreate.c, ForFind.c и ForDelete.c как несложно догадаться эта библиотека содержит функции для создания дерева, удаления каких-либо его элементов и поиска по дереву, ну и еще кое-какие, что для нашей проблемы не так уж и важно. Данные программа считывает из текстовых файлов TreeDataCreate.txt, TreeDataDelete.txt, TreeDataFind.txt в этих файлах, как уже говорилось, находятся данные в виде массивов чисел для создания дерева, поиска по двоичному дереву и удаления из дерева. Основной получаемый исполняемый файл это BalanceTree который компилируется из "сишного" BalanceTree.c, однако есть еще один Test, который компилируется из Test.c и содержит простенькие тесты для функций из библиотеки. Также в ходе работы программы создаются временные текстовые файлы Temporal*.txt и имеется один header-файл Description.h с описаниями функций, который подключается к BalanceTree и Test.

Вот мы и подобрались к сути проблемы всё это добро собирается с помощью Makefile текст которого я привожу ниже:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
BalanceTree Test TreeDataCreate.txt TreeDataDelete.txt TreeDataFind.txt: BalanceTree.o Test.o libTree.a
    gcc BalanceTree.o -L. -lTree -o BalanceTree
    gcc Test.o -L. -lTree -o Test
    echo "70 71 69 68 67 66 65 90 85 71 95 100 110 88 80 87 82 75 77 74 93 94" > TreeDataCreate.txt
    echo "74 32 66 75 100 66" > TreeDataDelete.txt
    echo "74 42" > TreeDataFind.txt
 
BalanceTree.o: BalanceTree.c Description.h
    gcc -c -Wall -Werror BalanceTree.c
 
Test.o: Test.c Description.h
    gcc -c -Wall -Werror Test.c
 
libTree.a: ForCreate.o ForDelete.o ForFind.o
    ar rc libTree.a ForFind.o ForCreate.o ForDelete.o
    ranlib libTree.a
 
ForCreate.o: ForLibrary/ForCreate.c
    gcc -c -Wall -Werror ForLibrary/ForCreate.c
 
ForDelete.o: ForLibrary/ForDelete.c
    gcc -c -Wall -Werror ForLibrary/ForDelete.c
 
ForFind.o: ForLibrary/ForFind.c
    gcc -c -Wall -Werror ForLibrary/ForFind.c
 
clean :
    -rm BalanceTree
    -rm Test
    -rm BalanceTree.o
    -rm Test.o
    -rm TreeDataCreate.txt
    -rm TreeDataDelete.txt
    -rm TreeDataFind.txt
    -rm ForCreate.o
    -rm ForDelete.o
    -rm ForFind.o
    -rm libTree.a
    -rm TemporalData.txt
    -rm TemporalDataFind.txt
Очень хочется знать мнения авторитетных да и просто знающих людей, корректен ли данный Makefile в плане целей, зависимостей, правил да и вообще?? И если нет, то прошу советов по улучшению))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 17:43
Ответы с готовыми решениями:

Как указать полный путь к компилятору сс в Makefile?
Такая ситуация: компилятор сс, компилятор находится не там где прописано в переменной PATH. Как...

C:\Dev-Cpp\Makefile.win [Build Error] [Безымянный1.o] Error 1
C:\Dev-Cpp\Makefile.win Error 1 компилятор стал показывать такую ошибку, после того как я...

Makefile для чистого VCL проекта C++ Builder
Добрый день! Так получилось что нужно доработать проект С++ Builder, а я привык работать в...

Проверка на корректность введенного e-mail адреса
Доброго времени суток! Написал программу связанную из http-запросов, но не могу написать проверку...

2
Эксперт С++
3210 / 1459 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.03.2012, 17:58 2
Цитата Сообщение от IvanMIPT Посмотреть сообщение
BalanceTree Test TreeDataCreate.txt TreeDataDelete.txt TreeDataFind.txt: BalanceTree.o Test.o libTree.a
gcc BalanceTree.o -L. -lTree -o BalanceTree
gcc Test.o -L. -lTree -o Test
echo "70 71 69 68 67 66 65 90 85 71 95 100 110 88 80 87 82 75 77 74 93 94" > TreeDataCreate.txt
echo "74 32 66 75 100 66" > TreeDataDelete.txt
echo "74 42" > TreeDataFind.txt
это что? тоже част мейкфайла?

выбросить!
читать: http://linux.yaroslavl.ru/docs... anual.html
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
29.03.2012, 18:18  [ТС] 3
Я понимаю, что это выглядит странно, но необходимо создать три текстовых файла с начальными данными, можно конечно написать программу или добавить функцию в уже существующую программу (не руками же их создавать в конце концов), но это будет дольше, а так из консоли с помощью shell раз и готово, или это выглядит совсем ужасно и так вообще никто не делает???

Добавлено через 3 минуты
Да и к тому же зачем из Makefile выбрасывать основные цели (BalanceTree, Test) с их зависимостями от объектных файлов и библиотеки (BalanceTree.o, Test.o, libTree.a) и правилами сборки которые по сути банальная компиляция??? Поподробнее если можно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2012, 18:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверить корректность 16-ричной системе в edit
Здравствуйте. Повесил у edit обработчик события keypress, в котором проверяется соответствие...

Makefile
Кто-нибудь может подсказать, в чем проблема. Решил создать Makefile для сборки исполняемых файлов,...

Makefile, как собрать программу
Скачал исходники программы. Имеется 2 cpp-файла и 1 h-файл. В makefile записано: RIPEMD-160: g++...

Проверить на корректность реализацию потоков
Я примерно понял как создавать потоки, но это похоже на гамнокод =3 #include <windows.h>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.