2012-02-21 2 views
2

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

Демо-приложение представляет собой проект Qt/cdt. Библиотека представляет собой чистый проект cdt. Вектор и матричный класс - один проект 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 
     ... 

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

ответ

0

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

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

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

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

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

0

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

+0

До сих пор я не использовал 'TEMPLATE = subdirs', но я вполне уверен, что это не соответствует моей потребности, поскольку другие проекты не являются поддиректорами. – Nobody

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