C ++ проектная организация - PullRequest
1 голос
/ 28 августа 2011

Я стал сопровождающим проекта общей библиотеки.Библиотека разделена на несколько модулей, каждый из которых скомпилирован как статическая библиотека, а затем соединен вместе.Eclipse используется как IDE, код хранится на сервере SVN.До сих пор процесс сборки осуществлялся вручную - создавая библиотеки, перемещая все .a и .h в общую папку, затем собирая общую библиотеку.Код должен быть скомпилирован для Linux, ARM и Windows.

Проблема в том, что мне нужно разделить текущие модули немного больше, для лучшего тестирования (несколько тестовых и пример простых программ, всего одна .cppфайл с main) и совместное использование кода между модулями (оба модуля A и B используют C, но я не хочу соединять A и B).В результате получается более сложное дерево зависимостей, которое будет трудно обрабатывать вручную.Мне также нужно иметь возможность создавать больше конфигураций одного проекта, возможно, связывая их с разными версиями зависимых проектов.

Как бы вы организовали код и настроили среду разработки?

РЕДАКТИРОВАТЬ:конкретные вещи, которые мне нужны из DE:

  1. IDE с GUI (мне нравятся vim и shell, но другие нет)
  2. Отдельные проекты, каждый из которых создает статическую библиотеку, setзаголовков и примеров программ
  3. Различные конфигурации для каждого проекта, связывание / включение различных версий и / или конфигураций зависимостей
  4. Завершение кода и поддержка SVN

Ответы [ 2 ]

0 голосов
/ 04 сентября 2011

Так что я решил это сейчас.Я создал папку с именем Pool.Дерево каталогов:

Pool
 - inc
    - arm
      - proj1 public headers directory
      - proj2 public headers directory
      - proj3 public headers directory
    - lin
      - proj1 public headers directory
      - proj2 public headers directory
      - proj3 public headers directory
    - win
      - proj1 public headers directory
      - proj2 public headers directory
      - proj3 public headers directory
 -lib
    - arm
      - libproj1.a
      - libproj2.a
      - libproj3.a
    - lin
      - libproj1.a
      - libproj2.a
      - libproj3.a
    - win
      - libproj1.a
      - libproj2.a
      - libproj3.a

Библиотеки копируются сюда автоматически с использованием make-файла.Включая заголовок:

#include "proj1/someheader.h"

Связывание с ним:

-L${POOL}/lib/arm -lproj1

Примечание: остерегайтесь -l библиотеки порядка параметров.

0 голосов
/ 28 августа 2011

make и Makefiles - это устоявшийся и очень продуманный метод для таких работ по созданию и связыванию, особенно в сочетании с automake и libtool.Эти инструменты отлично интегрируются с SVN и, возможно, также с Eclipse.

...