Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
#1

Корректность Makefile - C++

29.03.2012, 17:43. Просмотров 607. Ответов 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 в плане целей, зависимостей, правил да и вообще?? И если нет, то прошу советов по улучшению))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 17:43     Корректность Makefile
Посмотрите здесь:

makefile - C++ Linux
подправьте makefile pleace complex.o: complex.h complex.cpp g++ complex.h complex.o -c -fPIC libcomplex.so: complex.o ...

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

Makefile - C++ Linux
Не могли бы вы мне помочь написать makefile? У меня для примера в makefile есть переменная с именами файлов "main.cpp" "file.cpp"...

DLL+Makefile - C++
Как cкомпилировать в студии библиотеку с помощью мейка? VS 2012

Создание makefile - C++ Linux
Приветствую, написал бублиотеку, хочу использовать ее в программе, библиотека храниться в папке library, файлы transferline.cpp,...

Неправильный Makefile - C++ Linux
Здравствуйте! Пытаюсь сделать Makefile, но выдает ошибку: ../obj/EasyGL.cpp make: ../obj/EasyGL.cpp: Command not found make: *** ...

Упрощение MakeFile-а - C++ Linux
Вечер добрый! Я в инете откопал библиотеку f03gl для использования OpenGL с Фортраном в Линуксе. Удобство либы заключается в том, что её не...

Makefile debugger - C++ Linux
Добрый день. Имеется проект из 3-х файлов, main.cpp, include/cgi.h, include/cgi.cpp. Естественно из main.cpp инклудим cgi.h. Для...

Makefile внешний каталог - C++ Linux
Доброго времени суток. Пишу программку под Линукс. С простыми makefile'ами я вроде разобрался(когда файлы лежат в одном каталоге). Но что...

GTK+: не работает makefile - Кроссплатформенная разработка
Сделал программу по книге А. Гриффитса. Переписал из неё makefile, но при компиляции вылетает ошибка: root@ubuntu:~# make makefile:5:...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.03.2012, 17:58     Корректность Makefile #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/prog/...an_manual.html
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
29.03.2012, 18:18  [ТС]     Корректность Makefile #3
Я понимаю, что это выглядит странно, но необходимо создать три текстовых файла с начальными данными, можно конечно написать программу или добавить функцию в уже существующую программу (не руками же их создавать в конце концов), но это будет дольше, а так из консоли с помощью shell раз и готово, или это выглядит совсем ужасно и так вообще никто не делает???

Добавлено через 3 минуты
Да и к тому же зачем из Makefile выбрасывать основные цели (BalanceTree, Test) с их зависимостями от объектных файлов и библиотеки (BalanceTree.o, Test.o, libTree.a) и правилами сборки которые по сути банальная компиляция??? Поподробнее если можно
Ответ Создать тему
Опции темы

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