Подтвердить что ты не робот

Использование Visual Studio для IDE, но использование CMake для кроссплатформенной конфигурации

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

Мне немного нравится Visual Studio, и я хочу использовать его в качестве среды разработки для проектов C++, но я также хочу иметь возможность создавать любые мои проекты на моей системе Linux с двойной загрузкой, если я хочу. Я также хочу иметь возможность организовать мои заголовки и исходные файлы в определенную структуру каталогов на общем диске. Я хочу использовать CMake, чтобы настроить проект для его сборки с помощью Make в Linux или Visual Studio в Windows.

Таким образом, возможно ли поддерживать проект в Visual Studio 2012 Pro, чтобы использовать преимущества IntelliSense и компиляции, чтобы быстро писать код и тестировать его, а затем легко сделать исходные файлы частью конфигурации CMake в другом каталоге (я Я все еще буду поддерживать свои файлы CMake.txt, несмотря ни на что)?

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

Я знаю, что есть конвертер, который преобразует решения в файлы CMake. Это мой лучший вариант? Если так, это работает хорошо?

4b9b3361

Ответ 1

Мой лучший ответ на ваш вопрос:

Хотя я не могу порекомендовать этот инструмент, поскольку я не использовал его, он кажется наиболее близким к тому, что вы ищете.

http://sourceforge.net/projects/vcproj2cmake/

Для этого на вашем компьютере должна быть установлена среда выполнения Ruby, но он будет генерировать файлы CMakeLists.txt на основе вашего проекта Visual Studio.

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

Возможно, вы можете интегрировать это с модульным тестированием для проверки целостности сценариев CMake? И вы всегда можете предложить исправления для проблем, которые вы обнаружите.

Потенциальная альтернатива:

Я делаю вывод о некоторых вещах, так что прости меня, если я делаю какие-либо предположения.

Если ваши цели состоят в том, чтобы быть кроссплатформенным, а CMake не является требованием в качестве технологии (просто средство для этого), но вы не хотите использовать рекомендованный рабочий процесс CMake, потому что он не очень интуитивен (я могу полностью понять, что), возможно, вы можете взглянуть на Premake, который является более новым, но все же довольно надежным инструментом генерации проектов:

Я обнаружил, что синтаксис (чистый Lua) гораздо проще понять, и он гораздо ближе моделирует свои проекты к решениям Visual Studio. Это может быть более естественный рабочий процесс для вас.

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

Я решил не принимать его год назад, потому что в то время ему было трудно генерировать проекты Xcode, которые зависели друг от друга (возможно, это исправлено!). У меня не было проблем с Makefiles или решениями Visual Studio.

Окончательная рекомендация

Причина, по которой я не рекомендовал бы обратное генерирование сценариев генерации проекта из проекта Visual Studio, заключается в том, что он просто ставит очень неловкую зависимость от вашего проекта. Проекты Visual Studio не стандартизированы и даже не открыты - и если Microsoft изменит формат, вы можете нарушить ваш рабочий процесс, пока вы или кто-то еще не создадите патч для вашего реверс-генератора, чтобы заставить вас работать снова.

Можно утверждать, что при создании проектов существуют одни и те же проблемы, но Visual Studio исторически всегда был обратно совместим - или, по крайней мере, поставлялся с инструментами для обновления проекта. Создание проекта в более старой версии, скорее всего, всегда будет работать, в то время как попытка разобрать более новую версию решения Visual Studio будет гораздо более подвержена ошибкам и поломкам.

Если это серьезный производственный проект, который, как вы надеетесь, будет продолжать использоваться и поддерживаться в течение многих лет, я настоятельно рекомендую принять проверенный рабочий процесс (работающий непосредственно в файлах CMake или Premake), даже если он менее чем идеален или неудобен в сначала для разработчиков. Если это будет долгосрочный проект, то время, которое понадобится вам для ознакомления с новым рабочим процессом, будет меньше, чем время, необходимое для продолжения поддержки системы специальной сборки на нескольких платформах и в разных командах. Плюс, это добавит еще один инструмент в ваш пояс как разработчик. Просто мои два цента.

Ответ 2

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

Кроме того, схема решения для всех исходных файлов и файлов проекта может быть довольно странной и не удобной для других платформ.

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

В моем случае я создал следующую команду CMake для создания решения Visual Studio:

cmake -G "Visual Studio 10" -D DEBUG=0 .

А для пакетной сборки и установки из командной строки в Windows я делаю:

cmake --build . --target install --config VC_CONFIGURATION_1  -- "/v:m"
cmake --build . --target install --config VC_CONFIGURATION_2  -- "/v:m"

Сам файл CMake является кроссплатформенным. Конечно, у него есть пара специфичных для Windows строк, определяющих конфигурации, и опция WIN32 в add_executable(), но вы можете подготовить их только для этой платформы.