Скомпилируйте весь проект C вместо нескольких файлов - PullRequest
0 голосов
/ 10 мая 2018

У меня есть целая библиотека, созданная на C. Она имеет почти 10 папок с большим количеством файлов.

Я создал файл filename.c в корневой папке и пытаюсь скомпилировать его в mac, используя gcc test.c -o test, однако он не включает заголовочные файлы.Как правило, я должен добавить все файлы заголовков gcc test.c libaudio.c -o test

Как я могу скомпилировать весь проект вместо одного файла.

Ответы [ 4 ]

0 голосов
/ 10 мая 2018

Я определенно рекомендую подход make, поскольку он масштабируемый.

Если у вас действительно есть только пара файлов, gcc примет несколько файлов .c в командной строке и свяжет их все для создания одного исполняемого файла.

0 голосов
/ 10 мая 2018

Makefiles решит вашу проблему.Вы можете создать свои собственные правила, чтобы очистить проект (удалить сгенерированные файлы), построить проект, указав, где находится ваш компилятор (скомпилировать исходные файлы, расположенные по определенному пути, расширению и т. Д.), Установить выходной путь и так далее, безввод большого порядка компиляции.

https://www.gnu.org/software/make/manual/make.html

Редактировать: там вы сможете найти, как добавить общие, статические или необработанные библиотеки в ваш проект через make-файлы.

0 голосов
/ 10 мая 2018

Используйте Makefile.make Утилита, считывающая конфигурацию в Makefile, автоматизирует выполнение отдельных команд, так что вам нужно только назвать элемент, который вы хотите восстановить.

make myprogram

И makeиспользуйте информацию о зависимостях, хранящуюся в правилах Makefile, чтобы определить, какие другие элементы «устарели», перестроить их и собрать в myprogram.

Это приличное «первое»Учебник по времени для "make".

Вот полная документация по "make"

Как только вы овладеете концепциями внутри make, вы сможетеиспользуйте другие инструменты, которые делают Makefiles более простым, более переносимым или и тем, и другим.

Некоторые инструменты, улучшающие "make", включают в себя "cmake", "automake", "коллекция autotools", "scons", "waf", "rake", "doit", "ninja", "tup", "redo" и "sake".Есть и другие, и некоторые относятся к конкретному языку программирования или ограничены определенной средой.

Причина, по которой я рекомендую «делать» над другими, заключается в том, что «make» - это базовая линия, которая всегда будет присутствовать, ифункции других инструментов часто не понимаются или не признаются необходимыми, пока вы не получите достаточный опыт работы с «make».

0 голосов
/ 10 мая 2018

В C концепция проекта не является частью языка, обычно она зависит от инструментов / платформы / библиотеки, которые вы должны построить.

На платформах на основе Linux у вас может быть makefile, описывающий проект, или в библиотеке может быть скрипт cmake.

Вы должны быть в состоянии найти инструкции по сборке в документации вашей библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...