Управление несколькими проектами в Eclipse - PullRequest
2 голосов
/ 21 февраля 2012

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

Демонстрационное приложение - это проект Qt / cdt.Библиотека является чисто CDD-проектом.Класс векторов и матриц является одним проектом cdt.У каждого из других классов есть собственный проект cdt.

Сейчас я в основном занимаюсь разработкой библиотеки и хочу увидеть результаты в демонстрационном приложении.Таким образом, основной цикл разработки заключается в изменении источника библиотеки и перекомпиляции демонстрационного приложения.

Моя проблема заключается в следующем: как настроить сборку проектов, чтобы в ней нужно было только перестроить необходимые файлы и связать их соответствующим образом.

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

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

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

Примечание Другая проблема со ссылками на проекты заключалась в том, чтоклассы шаблонов были скомпилированы в их проекте, что привело к отвлекающим сообщениям об ошибках.

Редактировать Чтобы лучше понять структуру каталогов:

eclipse_workspace/
    demo_application/
       .cproject
       .project
       main.cpp
       somewidget.h
       somewidget.cpp
       demo_application.pro
       ...
    main_library/
       .cproject
       .project
       class1_header.h
       class1_implementation.cpp
       class2_header.h
       class2_implementation.cpp
       ...
    .../
    vector_matrix/
       .cproject
       .project
       vector.h
       vector.cpp
       matrix.h
       matrix.cpp
       ...

Каждый проект зависитна проекты под ним.

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Наконец я нашел решение после нахождения нужных слов для поиска. Основная проблема заключалась в том, что созданные в QMake Makefiles не проверяли наличие «статической» библиотеки как зависимости от цели. Я решил это, добавив

PRE_TARGETDEPS += "path/to/my/libRary.a"

К файлу проекта. После этого бинарный файл восстанавливается, когда в библиотеке произошли изменения.

Дополнительно я настраиваю каждый проект в eclipse для ссылки на зависимые проекты (Свойства проекта -> Ссылки на проект) для запуска перестроений при необходимости.

Кроме того, я избавился от некрасивых сообщений об ошибках из моего шаблонного проекта, настроив сборку правильно (у меня был main.cpp, чтобы показать пример использования шаблона, поэтому сборка была приятной). Проблема заключалась в том, что файлы .cpp классов шаблонов также были в сборке, поэтому они были скомпилированы дважды, что приводило к ошибкам (предыдущее объявление ... в строке [точно такая же строка]). Я решил это, исключив все эти файлы шаблонов из сборки.

0 голосов
/ 29 февраля 2012

Если я вас правильно понял, найдите оператор TEMPLATE = subdirs в файле .pro.Я не работаю с Eclipse, поэтому не судите строго

...