Где размещать общие для нескольких проектов исходные файлы?
От: Rothmans  
Дата: 20.02.06 14:16
Оценка:
Привет всем,

Я использую Visual Stidio 2003. У меня есть несколько проектов, написанных на С/С++.
Многие из них используют вспомогательные "библиотечные" функции, написанные мною же.
Как сделать так, чтобы не копировать файлы с часто используемым кодом в разные проекты, а хранить их все в одном месте?
Как у меня все расположено сейчас:
Projects
Common
*.cpp
*.h
MyProject1
Specs
Docs
...
MyProject1
*.cpp
MyProject2
Specs
Docs
...
MyProject2
*.cpp
*.h
Собственно почему мне не нравится хранить библиотечные исходники в отдельной директории на том же уровне, что и остальные проекты:
1) в тексте программ получается надо использовать конструкции вроде
#include "..\..\Common\mysourcefile.h"

Что при копировании на соседнюю машину может и нескомпилироваться без переделок.
2) под CVS приходится помещать всю папку, в которой хранятся все проекты вмеесте с библиотечными исходниками.

Подскажите, как мне правильно расположить файлы.

Спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>

21.02.06 12:43: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Где размещать общие для нескольких проектов исходные фай
От: Rothmans  
Дата: 20.02.06 14:19
Оценка: +1
Сорри, все форматирование съехало.
Вот как должно было быть:

Как у меня все расположено сейчас:
Projects
    Common
        *.cpp
        *.h
    MyProject1
        Specs
        Docs
        ...    
        MyProject1
            *.cpp
    MyProject2
        Specs
        Docs
        ...
        MyProject2
            *.cpp
            *.h
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Где размещать общие для нескольких проектов исходные фай
От: Vain Россия google.ru
Дата: 20.02.06 18:18
Оценка:
Здравствуйте, Rothmans, Вы писали:

R>Многие из них используют вспомогательные "библиотечные" функции, написанные мною же.

R>Как сделать так, чтобы не копировать файлы с часто используемым кодом в разные проекты, а хранить их все в одном месте?
так и храни их в одном месте, укажи путь к этому месту через опцию /I (Additional Include Directories)
у нас так:
Engine
  _Libs
    *.obj
    *.lib
  _Projects
    *.sln
    *.vcproj
  _Run
    *.exe
    *.cfg
    *.dll
    короче папка с работающей программой и её каталогами
  _Sources
    *.cpp
    *.h(pp)
    сторонние библиотеки в исходниках
  SubProject1
    тоже самое,токо для подпроекта
  SubProject2
  etc

при сортировке все каталоги не подпроектов обычно "всплывают" наверх

R>1) в тексте программ получается надо использовать конструкции вроде

не надо такого в исходниках писать, включай по возможности файлы так, как будто они все в одной куче, а пути пропишешь в поиске..
R>Что при копировании на соседнюю машину может и нескомпилироваться без переделок.
копируй вместе с проектом (*.vcproj)
R>2) под CVS приходится помещать всю папку, в которой хранятся все проекты вмеесте с библиотечными исходниками.
у нас Perforce недавно появился, так там отстой — подпапка в depot полжна быть такой же подпапкой как на диске, без проблем не бывает. А вообще в перфорсе и с меню отстой, все забабахано в кучу, и на каждый чих надо хрен знает что сделать.. Ж(
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Где размещать общие для нескольких проектов исходные
От: Аноним  
Дата: 20.02.06 23:43
Оценка: 3 (1)
Здравствуйте, Vain, Вы писали:

R>>2) под CVS приходится помещать всю папку, в которой хранятся все проекты вмеесте с библиотечными исходниками.

V>у нас Perforce недавно появился, так там отстой — подпапка в depot полжна быть такой же подпапкой как на диске, без проблем не бывает. А вообще в перфорсе и с меню отстой, все забабахано в кучу, и на каждый чих надо хрен знает что сделать.. Ж(
Забудьте CVS (может и Perforce — не знаю, не пользовался), пользуйтесь svn — лучше во всех отношениях.
Re[2]: Где размещать общие для нескольких проектов исходные
От: Rothmans  
Дата: 21.02.06 07:05
Оценка:
Здравствуйте, Vain, Вы писали:

V>так и храни их в одном месте, укажи путь к этому месту через опцию /I (Additional Include Directories)

V>у нас так:
V>
V>Engine
V>  _Libs
V>    *.obj
V>    *.lib
V>  _Projects
V>    *.sln
V>    *.vcproj
V>  _Run
V>    *.exe
V>    *.cfg
V>    *.dll
V>    короче папка с работающей программой и её каталогами
V>  _Sources
V>    *.cpp
V>    *.h(pp)
V>    сторонние библиотеки в исходниках
V>  SubProject1
V>    тоже самое,токо для подпроекта
V>  SubProject2
V>  etc
V>

V>при сортировке все каталоги не подпроектов обычно "всплывают" наверх

Правильно ли я понял, что ты предлагаешь primary output (сборки) всех проектов располагать в одной директории, исходники этих проектов в другой, obj и lib файлы всех проектов в третьей?
Это ж сколько перенастраивать стандартно созданный проект визуал студии!
Плюс не скопировать проект никуда (по крайней мере потому что .proj файлы отделены от исходников). Плюс на каждый проект отдельная поддиректория в директориях типа файлов. У меня например почти в каждом проекте хранится документация к нему, спецификации, фирмвари и др. Создавать на каждый тип документации свою папку, а в ней поддиректории по одной на проект?
По-моему сильно запутанно это, в чем выигрыш?

R>>1) в тексте программ получается надо использовать конструкции вроде

V>не надо такого в исходниках писать, включай по возможности файлы так, как будто они все в одной куче, а пути пропишешь в поиске..

тогда при копировании на другую машину точно компилиться не будет

R>>Что при копировании на соседнюю машину может и нескомпилироваться без переделок.

V>копируй вместе с проектом (*.vcproj)

этот файл надо выцеплять из папки _Projects отдельно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Где размещать общие для нескольких проектов исходные фай
От: FreshMeat Россия http://www.rsdn.org
Дата: 21.02.06 11:08
Оценка:
Здравствуйте, Rothmans, Вы писали:

R>Как сделать так, чтобы не копировать файлы с часто используемым кодом в разные проекты, а хранить их все в одном месте?


Если есть возможность, почитай книгу Эда Салливана "Время — деньги" (Under Pressure And On Time). В пятой главе он рассказывает о решении этого и других вопросов в NuMega.
Хорошо там, где мы есть! :)
Re[3]: Где размещать общие для нескольких проектов исходные
От: Angler Россия  
Дата: 21.02.06 11:43
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Забудьте CVS (может и Perforce — не знаю, не пользовался), пользуйтесь svn — лучше во всех отношениях.


Зачем же так категорично? Переводить мне лениво, а на англ. или русском под рукой не оказалось :

-Die gleichen Daten (z. B. nach Konvertierung) benötigen in einem Subversion-Repository deutlich mehr Platz als in einem CVS-Repository.
Subversion gilt als stabil, allerdings wird CVS bereits rund 20 Jahre verwendet, sollte also noch weniger Bugs enthalten.

-Wenn das Berkeley-Datenbanksystem für Subversion als Repository-Grundlage verwendet wird, unterliegen die Daten einerseits dessen binären Inkompatibilitäten abhängig von der verwendeten Version, und andererseits den damit eingebrachten Stabilitätsproblemen. Dies kann zur Folge haben, dass ein mit einer älteren Version erstelltes Repository auf die neue Version angepasst werden muss. Zudem ist der Zugriff über NFS dann nicht sicher möglich.

-Durch das Fehlen einer Semantik für Tags ist bei gehobenen Ansprüchen an das Versionskontrollsystem die Angabe der Revisionsnummer als Referenz, beispielsweise beim Bug-Tracking oder in der Dokumentation, unabdingbar. Die Verwendung von Server-seitigen Scripts kann steuern, ob, wie und von wem erstellte Tags modifiziert werden können.

Re: Где размещать общие для нескольких проектов исходные фай
От: Aen Sidhe Россия Просто блог
Дата: 21.02.06 18:59
Оценка:
Здравствуйте, Rothmans, Вы писали:

R>Привет всем,


R>Я использую Visual Stidio 2003. У меня есть несколько проектов, написанных на С/С++.

R>Многие из них используют вспомогательные "библиотечные" функции, написанные мною же.
R>Как сделать так, чтобы не копировать файлы с часто используемым кодом в разные проекты, а хранить их все в одном месте?
R>Как у меня все расположено сейчас:

R>1) в тексте программ получается надо использовать конструкции вроде

R>
R>#include "..\..\Common\mysourcefile.h"
R>

R>Что при копировании на соседнюю машину может и нескомпилироваться без переделок.
R>2) под CVS приходится помещать всю папку, в которой хранятся все проекты вмеесте с библиотечными исходниками.

R>Подскажите, как мне правильно расположить файлы.


А где угодно — хоть на луне.
Все директории референси один раз в настройках проекта в секции Include компилятора, емнип.
И все...

и будет такой код:

#include "myfile.h"
С уважением, Анатолий Попов.
ICQ: 995-908
Re: Где размещать общие для нескольких проектов исходные фай
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 19:46
Оценка:
Здравствуйте, Rothmans, Вы писали:

R>1) в тексте программ получается надо использовать конструкции вроде

R>
R>#include "..\..\Common\mysourcefile.h"
R>

R>Что при копировании на соседнюю машину может и нескомпилироваться без переделок.
R>2) под CVS приходится помещать всю папку, в которой хранятся все проекты вмеесте с библиотечными исходниками.

Структура проектов на C++ с использованием Subversion и Mxx_ru
Автор(ы): Евгений Охотников
Дата: 22.05.2005
Данная статья описывает предложения по организации файловой структуры проектов на C++ и компиляции проектов с помощью Mxx_ru (http://eao197.narod.ru/mxx_ru), а так же показывает, как использовать систему контроля версий Subversion (http://subversion.tigris.org) не только в качестве инструмента для управления версиями исходных текстов, но и для отслеживания зависимостей между проектами.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.