LINUX.ORG.RU

Скомпилировать проект Visual C++ для Linux.

 , , , ,


0

2

У меня есть сервер, разработанный в Visual C++. Работать в Visual C++ мне удобно, но серверное приложение будет работать в Debian.

Идеальна была бы возможность компилировать этот VC++ проект для Debian, не меняя формат проекта. Есть ещё клиент на Qt, который тоже хотелось бы собирать для линуксов и мака. Но работать мне удобно в VC++. Возможно ли скомпилировать под линукс vcproj? Может есть возможность конвертировать проект в QtCreator-проект или что-то ещё и обратно? Какие возможны решения для моей проблемы?

https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-develop... Вот это мне показалось то, что мне нужно, почитал, пытался воспроизвести, но тут похоже что-то с проводами связано? Наверное мне не подходит?


Конечно Visual C++ — ещё та кака, но, говоря более объективно, тебе надо написать Makefile со списком всех cpp/c файлов и опциями к GCC. Сам в гугле найдёшь как. Потом вызывай make и оно само соберёт тебе бинарник с сервером.

В зависимости от того, какие быдлокодеры у вас в проекте, возможно придётся поправить несколько ошибок и только потом собирать для Linux.

Для Qt рекомендую вообще использовать ихний QMake как систему сборки. Ибо меньше усилий.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)

cmake // мимокрокодил

Xenon ★★★
()

CMake

CMake поддерживает Qt и умеет генерацию проектов под MSVC, Qt Creator.

Norgat ★★★★★
()
Ответ на: комментарий от a1batross

надо написать Makefile со списком всех cpp/c файлов и опциями к GCC

Makefile - понятно. Но мне удобно отлаживаться в Visual C++. Я так понимаю, что в этом случае мне надо будет одновременно работать с vcproj и Makefile?

user08
() автор топика

Возможно тебе поможет что-то вроде этого, но рекомендую все же ознакомится с Makefile'ами и научиться создавать и собирать проект без применения GUI.

m0rph ★★★★★
()
Ответ на: комментарий от user08

Само собой.

vcproj под Linux только вроде какое-то недоIDE понимало.

Отлаживать в VC++ тебе не выйдет. Берёшь GDB, консольку и там всё делаешь. Вполне удобно после нескольких часов труда и более функционально, чем огрызок в VC++.

Одновременно... ну по сути, да. В одном случае для сборки с Windows, во втором для Linux.

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

Отлаживать в VC++ тебе не выйдет.

Почему не выйдет? Я хочу заниматься разработкой в Visual C++, а релиз компилировать для Debian.

user08
() автор топика
Ответ на: комментарий от user08

Ну так занимайся. Кто тебе мешает? Только линуксовые бинари отлаживать в кривоподелке мелкософта у тебя не выйдет. Что придётся делать для отлаживания Linux-версии я тебе уже сказал. А я не думаю, что у вас там такой код, который легко перенесётся на Linux и будет точно одинаково работать.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от user08

winemaker is part of the Wine distribution, which is available through WineHQ

robot12 ★★★★★
()

Переходишь на cmake. Он тебе генерирует и vcproj с sln и что захочешь для нужной платформы.

invy ★★★★★
()

Просто перейди на qmake - не забивай себе моск.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от a1batross

Ну так занимайся. Кто тебе мешает? Только линуксовые бинари отлаживать в кривоподелке мелкософта у тебя не выйдет.

https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-develop... Мне кажется это именно то, что мне нужно. Но я не понимаю, что на хосте надо сделать, чтобы к нему подключиться.

user08
() автор топика
Последнее исправление: user08 (всего исправлений: 1)

по ссылке на скриншоте Remote GDB Debugger в студии, так что теоретически это именно решение для подобной разработки, но его вчера анонсировали - трудно что-то по нему сказать, кроме того что оно недоделано

зы если непонятно, там подразумевается линукс в ВМ, куда shell'ом шлются исходники, команды gdb и т.п.

anonymous
()

Вот тут у меня разрыв шаблонов. Объясните пжлста как не c/c++ погроммисту в чем сложность смены visual c++ и linux окружения для разработчика? В c/c++ я не умею, но в python разницы нет, в чем сложность? можно в 2х словах?

ggrn ★★★★★
()
Ответ на: комментарий от ggrn

смены visual c++ и linux окружения для разработчика?

В том, что под линуксом нет окружения для С++ разработчика. Есть motor, но это скорее С, все остальное - жалкая пародия на студию.

По теме - cmake уже посоветовали, бери, работает железно, ну или кросс-компилируй шлангом. Еще на rsdn.ru поищи - там товарищи делали аддон для ремоута к gdb, мб и отладку нормальную получишь, а не ахинею с bt/info locals и прочий бред из 70.

cnupm
()
Ответ на: комментарий от ggrn

visual c++ окружение это, обычно, nmake + cl для сборки проекта, а проектные файлы это *.vcxproj + *.sln (там XML внутри). Можно использовать и Makefile для Visual Studio, но, скорее всего, там внутри будет cl компилятор.

В Linux у тебя make + gcc являются стандартом для сборки проекта.

Т.е. во-первых, разный формат проектных файлов. Во-вторых, разные компиляторы.

Из первого пункта вытекает, что необходимо готовить проектные файлы для кросс компиляции (писать Makefile под Linux или генерировать его автоматически, например с помощью CMake). Напоминаю, что в C/С++ не стандартизирована файловая структура проекта, поэтому каждый проект может иметь свою собственную. А чтобы компилятор понял где что лежит ему и нужны проектные файлы. Ну и в довесок сюда же линковка идёт.

Из второго пункта вытекает, что надо писать такой код, чтобы он компилировался и cl'ем, и gcc одинаково. В Visual C++ точно были нестандартные расширения и, в старых версиях, нестандартное поведение. В gcc тоже вроде есть нестандартные расширения компилятора. Не уверен на 100%, но вроде вот они: https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html

К примеру, была разница в поддержке #pragma once (см. https://gcc.gnu.org/onlinedocs/gcc-3.1/cpp/Obsolete-once-only-headers.html )

Так что кроме того, что код надо собрать, его ещё и написать надо так, чтобы он собрался под gcc. А это, к слову, ещё и отсутствие чисто виндовых либ, например Win32 API или написание двух вариантов кода: под Win32 и POSIX.

Norgat ★★★★★
()
Ответ на: комментарий от cnupm

В том, что под линуксом нет окружения для С++ разработчика.

??

... Еще на rsdn.ru поищи - там товарищи делали аддон для ремоута к gdb, мб и отладку нормальную получишь, а не ахинею с bt/info locals и прочий бред из 70.

А можно скрин «нормальной отладки» увидеть? А пока что мне кажется, что ты зашёл не на тот сайт, но считаешь себя круче других.

UVV ★★★★★
()
Ответ на: комментарий от cnupm

че ты несешь, николай-овцеголовый?

anonymous
()

+1 к cmake

anonymous
()

Работать в Visual C++ мне удобно

надо тебя в музей сдать. яб пошел, посмотреть на такого, кому под студией удобно.

anonymous
()
Ответ на: комментарий от anonymous

Кто-то может объяснить чем студия плоха? Я имею в виду не «плохая и всё», а чем она кого не устраивает? Меня в ней не устраивает только то, что она разработана только под винду. Я рассматриваю переход моего проекта на QtCreator или Eclipse. Но если есть удобная возможность оставить студию, я бы остался в ней.

user08
() автор топика

Идеальна была бы возможность компилировать этот VC++ проект для Debian, не меняя формат проекта.

Переписать проект на cmake. После чего сгенерить в винде проект для студии из cmake. А в студии сгенерить make проект из cmake. На данный момент это самый правильный и современный способ вести кросс разработку.

Dudraug ★★★★★
()
Ответ на: комментарий от anonymous

яб пошел, посмотреть на такого, кому под студией удобно.

А что лучше? Да и vc++ это не только IDE, но и компилятор. В винде можно и в qtcreator кодить но с компилятор от микростфта.

Dudraug ★★★★★
()
Ответ на: комментарий от user08

Я рассматриваю переход моего проекта на QtCreator или Eclipse.

cmake же позволит иметь общий проект для всех средств сборки. Мы на работе активно юзаем cmake, да и сам я сейчас пишу либу на с++ в образовательных целях. Разрабатываю в основном в VS2015, но проверяю на clang и gcc тоже. Поэтому cmake тут был лучшим выбором.

Dudraug ★★★★★
()
Ответ на: комментарий от UVV

??

Ну покажи мне ее.

А можно скрин «нормальной отладки» увидеть?

Посмотрев по сторонам я не нашел ни одной машины под виндой, так что сам ищи на трубе записи работы intellitrace и прочих плюшек студии. И да - нормальная отладка это когда gdb при загрузке корки стектрейс показывает, а не кладет рядом свою.

А пока что мне кажется, что ты зашёл не на тот сайт

Бывает.

но считаешь себя круче других.

Не, я вообще излишне самокритичен.

cnupm
()
Ответ на: комментарий от user08

Я рассматриваю переход моего проекта на QtCreator или Eclipse

Ппц, пошёл третий десяток сообщений, а ТСа до сих пор никто не поправил, что он не различает IDE и компилятор.

UVV ★★★★★
()
Ответ на: комментарий от cnupm

Посмотрев по сторонам я не нашел ни одной машины под виндой, так что сам ищи на трубе записи работы intellitrace и прочих плюшек студии.

Supported: Visual Basic and Visual C# applications that use .NET Framework 2.0 or higher versions. You can debug most applications, including ASP.NET, Microsoft Azure, Windows Forms, WCF, WPF, Windows Workflow, SharePoint 2010, SharePoint 2013, and 64-bit apps.

Это блядь плюшки студии??

И да - нормальная отладка это когда gdb при загрузке корки стектрейс показывает, а не кладет рядом свою

gdb довольно редко кладёт свою корку рядом, если только не использовать древнюю как говно мамонта версию.

UVV ★★★★★
()
Ответ на: комментарий от UVV

Ппц, пошёл третий десяток сообщений, а ТСа до сих пор никто не поправил, что он не различает IDE и компилятор.

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

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Я имел ввиду, что ТС не врубается.

UVV ★★★★★
()

Говорят же msbuild заопенсорсили, но его разве под линукс портировали?

Gorthauer ★★★★★
()

У тебя изначально неправильный workflow, и менять надо его, а не придумывать костыли. Выкинь венду и угрёбище VC. Собирай весь свой проект под линуксом. Сборку описываешь make или cmake, для сборки под винду пользуешь mingw-gcc, для мака тоже есть кросс. Можно ещё 100500 target'ов добавить с разными архитектурами и осями без проблем. Отладка под винду - только в wine, это гарантирует, что твоё поделие будет работать под любой произвольно взятой вендой. IDE выбираешь любое, если оно вообще нужно.

В общем, решать проблему надо в корне, пока есть возможность, а все эти «мне удобно в VC» засунуть подальше, чтоб потом не попасть по-крупному.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

под винду пользуешь mingw-gcc

Как раз это

Выкинь венду и угрёбище VC

лол

Dudraug ★★★★★
()
Ответ на: комментарий от Stanson

В общем, решать проблему надо в корне, пока есть возможность, а все эти «мне удобно в VC» засунуть подальше, чтоб потом не попасть по-крупному.

Ты такой смешной. Предлагаешь юзать нахер никому не нужное «gcc под винду»=)

Dudraug ★★★★★
()
Ответ на: комментарий от user08

+1 к winemaker

собирал консольную программу

winemaker && make

и всё

/usr/bin/winemaker is owned by wine 1.9.6-1

sergej ★★★★★
()
Ответ на: комментарий от Dudraug

Ты такой смешной.

Смех без причины - признак дурачины.

Предлагаешь юзать нахер никому не нужное «gcc под винду»=)

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

И, кстати, даже под вендой, ничего лучше гцц пока нету, шланг сырой, а мелкософтовский компилятор из vc полнейшее убожище, годное разве что для hello world под единственную платформу.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

а мелкософтовский компилятор из vc полнейшее убожище, годное разве что для hello world под единственную платформу.

Ты несешь полную ахинею. Без оснований, наверное вычитал это в интернете.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Да-да, просто так на винду притащили всякие cygwin и mingw. Всякие Борланды тоже наверно от нехер делать пользовались бешеной популярностью и продавались за деньги. Всё это потому что msvc лучше всех, да. Про всякое кроссплатформенное я вообще молчу, 100% всяких SDK под всякие девайсы используют почему-то нифига не msvc в качестве кросс-компилятора. И в 90% случаев это почему-то gcc.

Отчего же замечательный мелкософтовый компилятор так обосрался, что используется только в мелкософтовской IDE? Наверно потому что он такой хороший и годный, да?

ЗЫ: Занимаюсь созданием успешного коммерческого софта под венду уже более 25 лет. И 20 из них делаю это только под линуксом и только с помощью gcc.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

Всё это потому что msvc лучше всех, да.

cygwin и mingw для сборки линуково-юниксовых прог. Потому что им нужны make, autoconf и в них могут использоваться специфичные для юникса вызовы и библиотеки, плюс gcc имеет ряд расширений в сравнение со стандартными си и си++. Поэтому это отдельный разговор.

Всякие Борланды тоже наверно от нехер делать пользовались бешеной популярностью и продавались за деньги

Ты борланд забудь, и ты говоришь в прошедшем времени. Сейчас 2015 год и в винде есть потрясающая среда разработки vs 2015. С полной поддержкой C++11 и почти полной 14го стандарта. Ты упорот и фанатик просто. Никто в здравом уме без крайней необходимости не будет использовать mingw-gcc.

Dudraug ★★★★★
()
Ответ на: комментарий от Stanson

100% всяких SDK под всякие девайсы используют почему-то нифига не msvc в качестве кросс-компилятора.

android понятно почему, ибо платно. И да, я тебя сейчас сразу, в vs2015 есть встроенный набор инструментов и sdk для андроида. И встроенный гит клиент.

Dudraug ★★★★★
()
Ответ на: комментарий от Stanson

Отчего же замечательный мелкософтовый компилятор так обосрался, что используется только в мелкософтовской IDE?

Прикручивается к qtcreator без проблем. Ты походу вообще не в теме.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Ты лучше скажи, когда крестокомпилятор в с11 научится? А уж сколько багов наитупейших было в msvc — не счесть. Ну и майкрософт самолично впиливают в студию божественный clang, интересно, почему? Наверное, потому что msvc гораздо лучше.

anonymous
()
Ответ на: комментарий от Stanson

ЗЫ: Занимаюсь созданием успешного коммерческого софта под венду уже более 25 лет. И 20 из них делаю это только под линуксом и только с помощью gcc.

Ты просто немного отстал от жизни. Я тут встречал людей, которые ругали с++11, ибо зоопарк, нахер не надо. И не пригодно для ком. использования. И они просто в осадок выпадали когда узнавали что в студии полная поддержка C++11.

Dudraug ★★★★★
()
Ответ на: комментарий от anonymous

Ты лучше скажи, когда крестокомпилятор в с11 научится?

Скорее всего никогда. Это означает, что на этот язык под виндой нет спроса. Под винду не пишет никто на c11. А опенсурсные проги так и быть можно и в mingw собрать. Это называется экономика. нет спроса - нет предложения.

Ну и майкрософт самолично впиливают в студию божественный clang, интересно, почему?

не исключено, что для android инструментария? не?

А уж сколько багов наитупейших было в msvc — не счесть

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

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Сейчас 2015 год и в винде есть потрясающая среда разработки vs 2015.

:)) Мыши плакали, кололись, но продолжали жрать кактус. :)

Прикручивается к qtcreator без проблем. Ты походу вообще не в теме.

Ну из говна тоже можно сделать подобие конфетки. Только вот жрать это никто в здравом уме не будет. Только говноеды всякие.

Stanson ★★★★★
()
Ответ на: комментарий от Dudraug

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

Да, такой прям огромный опыт, что уже не различаешь IDE и компилятор. :)

Вендузятники такие вендузятники. :)

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

:)) Мыши плакали, кололись, но продолжали жрать кактус. :)

Вообще не аргумент. Может конкретные претензии к конкретному продукту. А не твои воспоминания из 90х?

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

что для android инструментария? не?

Ну так чего бы им не дописать msvc?

Скорее всего никогда. Это означает, что на этот язык под виндой нет спроса.

НИНУЖНО!

В eclipse, codeblocks их тоже хватало.

А, ясно, еще один иде от компилятора не отличает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.