2009-10-19 2 views
0

Я занимаюсь программированием на языке C для школы, и я обнаружил, что повторно использую библиотеки, которые я создал, снова и снова (стеки, ввод пользователей, обработка ошибок и т. Д.).Организация рабочего пространства для школы/Написание Makefile

Прямо сейчас, моя личная структура каталогов SVN выглядит следующим образом:

trunk/ 
|-- 2520 
| `-- assignments 
|  |-- A2 
|   |-- Makefile 
|   |-- README 
|   |-- calculator.c 
|   |-- calculatorlib.c 
|   `-- calculatorlib.h 
`-- libs 
    |-- misc 
    | |-- errorlib.c 
    | |-- errorlib.h 
    | |-- userinputlib.c 
    | `-- userinputlib.h 
    `-- stacks 
     |-- stacklib.c 
     `-- stacklib.h 

Некоторые из этих файлов (userinputlib и errorlib) привыкает почти в каждом проекте я работаю по понятным причинам. Я хочу иметь возможность включать эти файлы в рабочую область проекта (2520/assignments/A2) без необходимости копировать файлы, потому что я не хочу копировать файлы, и я не хочу проверять в двух экземплярах того же файла в SVN.
Я хотел бы иметь файлы библиотеки в рабочей области проекта, поэтому мой Makefile работает без необходимости выполнять большую ручную конфигурацию (или пути жесткого кодирования).

Сначала я подумал о символических ссылках (поддержка SVN и tar), но я не могу скомпилировать свое задание, учитывая мои заголовки в другом каталоге.

Я могу вручную скомпилировать каждый заголовок в объектный файл и сделать окончательную ссылку, но я не уверен, как это сделать в Makefile автоматически.

Любая помощь или любая альтернатива тому, как у меня настроена настройка среды, приветствуется.

Спасибо!

EDIT: Я забыл упомянуть, что я искал Google и нашел несколько страниц, описывающих автоматическую генерацию зависимостей (возможно, я хочу это?) С помощью gcc -MM и я прочитал по GNU Make Manual, но ничего не выскочили на меня.

ответ

3

Использование может использовать функцию subversion externals, чтобы связать динамическую копию дерева libs в качестве подкаталога вашего проекта.

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

+0

Это именно то, что я пытался связать с моим ответом, но я думаю, что ваше немного более ясно. – timdev

1

Почему бы вам не захотеть (svn) скопировать необходимые библиотеки в ваш проект? По сути, вы создадите филиал своей библиотеки для использования в вашем проекте. Если вы обнаружите ошибку в коде библиотеки, вы можете исправить ее на месте и скопировать обратно (в копию). Как только вы завершите работу, вы можете объединить свои исправления обратно в место расположения библиотеки.

 Смежные вопросы

  • Нет связанных вопросов^_^