Перенос программ GNU C ++ на Visual C ++ - PullRequest
4 голосов
/ 17 марта 2009

Как вы переносите программы на C ++ с make-файлом, созданным из GNU C ++ в Linux, на Visual C ++?

Ответы [ 5 ]

3 голосов
/ 17 марта 2009

Одна вещь, которую я могу предложить, это использовать CMake. Если вы внедряете свою систему сборки с помощью CMake для автоматической генерации make-файлов для GCC в Linux, для автоматической генерации проектов и решений для VC ++ требуются лишь незначительные изменения.

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

2 голосов
/ 18 марта 2009

Портирование системы сборки: Вы можете использовать порт Windows GNU make и изменить make-файл для вызова инструментов командной строки Visual C ++ (cl.exe, link.exe, lib.exe и т. Д. .) при сборке в Windows и инструменты компилятора GNU при сборке в Linux. Сложность этого подхода зависит от сложности make-файлов.

Портирование кода: Это зависит от того, какие API и библиотеки вы используете, и какие предупреждения / ошибки / причуды компилятора вы встретите. Для более конкретного ответа задайте более конкретный вопрос.

2 голосов
/ 17 марта 2009

Я не знаю, как легко конвертировать из одного в другое, но ..

Если вы используете только функции ANSI C / C ++, обычно вам не нужно конвертировать make-файл, просто посмотрите, какие файлы .c / .cpp находятся в нем, и добавьте их в проект VS; вам также нужно будет проверить параметры компилятора и определенные макросы, чтобы поместить их в проект VS. Я сделал это, чтобы без проблем компилировать библиотеки, такие как expat, freetype, agg и другие.

1 голос
/ 21 августа 2015

CMake обладает тонкостью генерации визуального студийного проекта.

Если вам это не нужно, я предлагаю систему сборки Meson. Намного приятнее, подобное предложение. Требуются python3 и ninja, но никто не идеален. :)

1 голос
/ 22 марта 2009

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

Я регулярно кросс-компилирую на Visual Studio и G ++. В большинстве случаев вам просто нужно добавить все исходные файлы и файлы заголовков в проект Visual Studio («Добавить существующие файлы» и добавить все дерево исходных текстов), а затем скомпилировать его. Обычно вы получаете ошибки, поэтому начинаете исправлять ошибки оттуда. Если вы использовали специфичные для платформы библиотеки, возможно, вы застряли при переносе на альтернативные или удаленные функции.

Еще одно предостережение: Visual Studio и G ++ имеют разные особенности компиляции. По большей части они оба превосходно соответствуют стандарту C ++, но немного нестандартный код, который работает в одном, может не работать в другом. Я обнаружил, что это особенно верно при работе с шаблонами, поскольку Visual Studio во многих случаях странно допускает синтаксические ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...