#visual-studio-2010 #makefile #mingw #mingw32
#visual-studio-2010 #makefile #mingw #mingw32
Вопрос:
У меня есть проект Visual Studio-2010, который содержит множество исходных файлов и заголовочных файлов. Теперь мне нужно выполнить автоматическую сборку этого проекта под последней версией Debian GNU / Linux. Поэтому я решил использовать MinGW. Но мне нужен makefile этого проекта Visual studio. Есть ли простой способ перевести проект vs в makefile? Или MinGW может напрямую создать проект Visual Studio с дополнительными пакетами или библиотеками? Любые идеи будут оценены.
Комментарии:
1. Действительно ли этот проект был перенесен на Linux? Или вы просто скрещиваете пальцы и надеетесь, что он скомпилируется? Потому что, даже если система сборки «просто работала» ™, это не гарантирует, что код действительно будет скомпилирован и / или связан правильно.
2. Нет, этот проект еще не был перенесен на Linux? И я не собираюсь этого делать. Я хочу разрабатывать под Windows и автоматически создавать на Linux.
3. Хех, извините, это несбыточная мечта. Если вы не используете полностью кроссплатформенные библиотеки (boost, qt и т.д.), Не выполняете никаких системных вызовов (это, вероятно, происходит, и вы даже не осознаете этого) и кроссплатформенную систему сборки (например, cmake), этого просто никогда не произойдет. Сделать проекты на C / C кроссплатформенными обычно довольно сложно. Также я не уверен, что означает «автоматическая сборка» в этом контексте. Ферма компиляции? automake?
4. Хм, «Автоматическая сборка» означает, что сборку можно выполнить с помощью скрипта (например, makefile).
5. Это не автоматическая сборка. Это make. И существует множество его разновидностей. Вам действительно стоит взглянуть на cmake, он может генерировать как make-файлы Linux, так и проекты Visual studio. Однако, как я надеюсь, я подчеркнул, это не гарантирует, что код действительно будет скомпилирован на другой архитектуре.
Ответ №1:
Если вы хотите постоянно переносить сборку вашей программы на GNU / Linux, я бы рекомендовал переключиться на autotools (autoconf и automake). Автоинструменты очень распространены и имеют отличную поддержку кросс-компиляции. (с другой стороны, также несколько заслуженная репутация странности.) Хотя в проектах VS, о которых я знаю, нет автоматического перевода, настроить компиляцию одной программы может быть так же просто, как найти все исходные файлы и заголовочные файлы, перечисляя их в Makefile.am соответствующим образом и написание правила для объектов Windows.
Если переход на MinGW не написан в stone или вероятен сценарий продолжения сборки с двумя компиляторами, используйте cmake, как предлагали комментаторы. Хотя я всегда считал CMake серьезной проблемой для сборок без сопровождения (обычных для программного обеспечения с открытым исходным кодом), он имеет хорошую репутацию за создание всех видов файлов описания сборки, таких как Makefiles и VS projects.
Так или иначе, вам придется конвертировать ваш проект вручную. Это может быть довольно просто для обычной структуры проекта, но это должно быть сделано.
Ответ №2:
Я не знаю ни одной цепочки инструментов, которая способна сделать это из коробки. CMake (и все другие генераторы мета-файлов makefile) предлагают только одностороннее преобразование: они могут сгенерировать проект / решение Visual Studio один раз, но нет способа автоматической синхронизации с изменениями, внесенными в конфигурации VS / MSBuild. Написание и поддержка конфигураций CMake (или PreMake или любых других) — это сложная задача, и это имеет смысл только в том случае, если ваша основная платформа разработки находится где-либо за пределами платформы Microsoft.
Однако есть интересная альтернатива: xbuild — порт MSBuild, который является системой сборки, лежащей в основе интеллекта VS. Теоретически, можно расширить систему для поддержки конфигураций MSBuild, сгенерированных Visual Studio, и определить правила преобразования для соответствующих цепочек инструментов C на других платформах (даже двусторонним способом). Декларативный, основанный на XML характер MSBuild / XBuild — это огромная победа по сравнению с autotools / make, которые стоили мне слишком много времени и неудобств в моей жизни разработчика. Оба MSBuild / XBuild реализованы как чисто управляемая платформа с хорошо продуманной архитектурой, так что расширения довольно легко реализовать. Конечно, это окупается, только если вы (или ваша компания) серьезно задумываетесь о крупномасштабной кроссплатформенной поддержке.