как работать над проектом с визуальной студией и затмением - PullRequest
2 голосов
/ 12 октября 2010

В настоящее время мы запускаем проект с участием людей в Windows и Linux и с использованием SVN.

Проблема в том, что люди, которые хотят использовать Visual Studio (для большинства из них 2010), имеют проблемы со структурой папок исинхронизация там проекта.

у них есть ankhsvn (http://ankhsvn.open.collab.net/), они отображают проект в реальную папку, поэтому у всех есть хорошая файловая структура, и решение находится на SVN (мы предпочли бы нено это как-то нужно ankhsvn) другие люди просто проверяют папку проекта под решением на SVN.

Но если кто-то, кто не использует SVN, добавляет новый файл, VS не добавляет его автоматически, и это вызывает многонеприятностей.

Итак, правильно ли мы настроены? Есть ли способ хорошо работать с такой средой? Как бы вы предложили нам работать?

Ответы [ 3 ]

2 голосов
/ 13 октября 2010

Поддерживать несколько целей сборки сложно, если вам нужно обновить файлы проекта для каждой цели.Например, добавление нового исходного файла требует обновления проекта Visual Studio и make-файла.

Как насчет попытки CMake попробовать?Он может генерировать файлы проекта для нескольких сред сборки.Мы используем его на своей работе для поддержки нескольких версий Visual Studio в 32- или 64-разрядной версии Windows, а также в нескольких версиях gcc в 32- и 64-разрядной версии Linux.Каждый проект (библиотека или исполняемый файл) требует ведения одного файла CMakeLists.txt, который используется для генерации файлов целевого проекта.

2 голосов
/ 26 октября 2010

Я бы сказал, что Cmake - это определенно правильный путь: он позволит вам поддерживать только один набор файлов (CMakeLists.txt) и вы сможете создавать проекты для всех версий Visual Studio, для Eclipse Xcode и make-файлы для gcc, CC и т.д ...

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

Также наличие вашего проекта в cmake может помочь в настройке среды непрерывной интеграции, такой как Hudson. Он может отслеживать ваш репозиторий кода (svn) и вызывать cmake при отправке изменений, создавать ваш проект, запускать модульные тесты.

project(MyNeatProject)

include_directories(h/ hpp/)
file(GLOB_RECURSE _my_src ./c/*.c)
file(GLOB_RECURSE _my_hdr ./h/*.h)
add_library( some_library SHARED ${YBMBS_SRC} ${YBMBS_HDR})
target_link_libraries( some_library dependency1 dependency2)
1 голос
/ 12 октября 2010

Я бы отделил свою древовидную структуру (возможно, полностью отдельные репо) на основе состава вашей команды или среды, на которую вы нацелены.

Каждый должен иметь клиент SVN - те, ктоне может использовать AnkhSVN, потому что они в Eclipse могут использовать что-то вроде Tortoise или SVN-плагин для Eclipse.SVN не знает и не заботится о том, что он отслеживает ваш C # или Java или любой другой код.Если вы добавите файл на локальный жесткий диск, он не будет волшебным образом отображаться в репозитории.

...