мнение об использовании собственных проектов Visual C++ по сравнению с проектом makefile

Я работаю над кросс-платформенной базой кода C/C++, в которой есть разработчики Visual C++ (подавляющее большинство) и XCode. Его также необходимо скомпилировать в Linux, потому что именно там он развернут. В настоящее время мы используем сложный make-файл Unix, который вызывается из командной строки Visual C++, XCode и Unix.

Однако проект makefile несколько снижает производительность разработчиков Visual C++:

  1. Более медленное время сборки
  2. Intellisense и текстовый поиск плохо работают для файлов, на которые нет прямых ссылок в проекте.
  3. Нет генерации зависимостей .h (непонятно, как это сделать в Windows)

Добавление собственного проекта Visual C++ имеет следующие недостатки:

  1. много работы по управлению всей этой отдельной конфигурацией платформы, как уже упоминалось ">здесь Возможно, иерархические листы свойств VC++ 2010 помогут.
  2. больше работы из-за синхронизации make-файла с собственным проектом

В настоящее время я рассматриваю возможность добавления собственного проекта для разработчиков Windows. Может ли кто-нибудь поделиться своим опытом о том, что лучше, или предложить, как можно уменьшить эти проблемы с любым подходом.

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


person Yale Zhang    schedule 28.01.2011    source источник
comment
CMake является проблемой только в том случае, если вам НРАВИТСЯ тратить время. Те, кому нравится содержать сложные системы makefile в порядке, будут абсолютно ненавидеть это, потому что это потребует от них отложить свою рутинную работу и сделать что-то важное.   -  person Edward Strange    schedule 28.01.2011


Ответы (3)


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

Преимущество CMake в том, что он создает для вас ВСЕ конфигурации. Вы должны настроить один проект CMake, а затем использовать его для создания решений VS, проектов XCode и файлов makefile для Unix.

Это огромное улучшение — каждый может работать в своей «родной» среде, будь то Windows, Mac или Unix.

person Reed Copsey    schedule 28.01.2011
comment
это позволяет вам вернуться назад? т. е. если вы добавляете материал через визуальную студию, можете ли вы заставить CMake синхронизировать изменения обратно в глобальный проект? - person Keith Nicholas; 28.01.2011
comment
Нет, это не позволяет синхронизировать обратно. Думайте об этом как о вашей текущей реализации make-файла. Вы изменяете свой CMakeLists.txt один раз, фиксируете. Всем перестроиться. Сделанный. - person Dat Chu; 28.01.2011
comment
@Keith: Да, вам нужно научиться редактировать файл CMakeLists.txt. Как только вы это сделаете, это будет очень просто... Он также делает некоторые приятные вещи в отношении сборок из исходного кода, что очень удобно при работе на кросс-платформенной основе для поддержания чистоты вашего контроля версий... - person Reed Copsey; 28.01.2011

Я справился с этим, написав свой собственный преобразователь, который синхронизировал сценарии для различных встраиваемых сред разработки. Если что-то вроде приведенного выше ответа об использовании CMake сделает все это за вас, то это будет правильный путь. Но если это слишком сложно, создание собственного пользовательского инструмента не так сложно. Просто нужно синхронизировать в обе стороны.

Также, если у вас его нет. Visual Assist для визуальной студии — это круто :)

person Keith Nicholas    schedule 28.01.2011

Я не фанат генераторов make-файлов, cmake, qmake и им подобных.

Я фанат мейкапа. У нас есть один make-файл (ну, на самом деле несколько, но они включают друг друга, и нет рекурсивного make), который знает все зависимости проекта на всех платформах (windows, wince, linux, mac, ...). Это дает:

  • Makefile на самом деле не более чем список источников (включая зависимости, которые автоматически генерируются во время сборки)
  • Одна и та же команда сборки на каждой платформе, кроме указания цепочки инструментов
  • Сборка использует все мои процессоры
  • Очень короткое время, чтобы ничего не делать
  • Developers can use whatever IDE they fancy
    • vim, emacs, qtcreator, eclipse, XCode all in use
    • Я часто использую VC++ в Windows (для отладчика)
  • Сценарий. Отличный способ автоматизировать ваши тесты

Хороший.

person bobbogo    schedule 09.10.2013