Как перейти с Windows на Linux для работы с C++?
==================================================

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

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

Вопросов масса, хотелось бы более развернутые ответы получить, если конечно вам не трудно.  
  

Я изучаю C/C++ в основном конечно C++, есть некоторые вопросы связанные с ними. Так как я хочу переходить с Windows на Linux, не знаю точно что могу потерять, есть IDE Visual Studio, она мне не очень нравится. WinAPI я не изучаю и прочие вещи, да есть C# и так далее, а там же и разработка на Unity и прочее. Я допускаю такую вероятность что мне придется работать с C#, но я пока точно не уверен для чего, как я знаю хорошей IDE под него пока нет, да есть наработки, но это все не важно, так как моя главная цель это C++.  

Так как я нацелен на переход в ОС Linux, интересуют такие вещи как подбор IDE, компиляторы и т.д. Я смотрю сейчас в сторону CLion, но не понимаю некоторых вещей, например CMakeLists(если можете объясните что это для чего и как), MinGW и Cygwin и другие такие вещи. Про MinGW, я более менее понял что то вроде сборщика который работает и под винду и под линукс, с Cygwin пока никак. Так же не очень понятно как разрабатывать программы с интерфейсом в данной IDE, консольные то понятно, но вот оболочка? По факту вопросы с IDE как для CLion так и для Qt будут одинаковыми, правда в Qt все понятно, как с конструирование там и со всем остальным. Понятное дело что если я буду разрабатывать на Linux, это не будут только какие то программы, но и игры и прочие вещи. Могу ли я что то потерять при разработке на Linux для Windows или наоборот на Windows для Linux? Точно не знаю работает ли DirectX под Linux. С компилятором вроде тоже, вроде как GCC бесспорно.  
  

Теперь про сам Linux, на что стоит обратить внимание и как выбрать для себя систему, в игрульки особо играть не собираюсь, а даже если во что то буду то есть Steam, сильно ли потеряю в производительности по сравнению с Windows? Даже если так то есть Wine. Опять же ничего не мешает поставить рядом винду, но это вряд ли.  
  

Если дочитали до конца, спасибо. Жду ответов. 

 1) GUI под линукс можно делать, например, на Qt. Соответственно IDE - QtCreator. Еще вариант - wxWidgets.  

2) Возможные IDE - QtCreator, Code::Blocks, Eclipse, CLion. Ну на самом деле их больше, но эти - более friendly при переходе с винды.  

3) Забудьте о Unity и C# под линуксом. По крайней мере пока что. Сейчас c# - в полном смысле работает только на винде. IDE для c# - VisualStudio :-)  

4) По производительности настроеный линукс лучше ненастроенного виндовс. Это 100%. Но первое время вы потеряете в удобстве. Я лично так и не смог перейти с VisualStudio на линуксовые IDE и не нашел для себя удобного аналога TotalCommander. Плюс сразу забывайте о фотошопе, если вам это важно. Есть конечно gimp, но он полностью не заменит фотошоп.   

5) Игры под линуксом можно разрабатывать скорее только на всяких SDL и прочих низкоуровневых openGL движках. Никаких Unity, Marmalade и прочего. Разрабатывать под web - можно спокойно под линуксом. Standalone-приложения - тоже, на Qt.   
  

Вроде постарался по максимуму ответить :-) 

 Быстро не получится.  

Сначала почитать пару-тройку книжек про то, как вообще в линуксе работать. Еще неплохо бы Advanced Bash Scripting почитать. Получается, минимум полгода уйдет на литературу.  

Далее обкладываемся гентушными хэндбуками, гуголом и т.п. и ставим генту.  

Помаленьку настраиваем и через год-два уже на мастдайку вообще не потянет! Главное — понять суть UNIX-way, тогда станет ясно, что мастдайка — это даже не гнилая операционная система, а некачественная прошивка для игровых приставок! 

 Пишете на сях под винду без WinAPI и чувствуете себя потребителем? Это потому что вы с системой и не работаете. Линух не поможет при таком подходе :-) 

 Касательно IDE - как вариант - Qt Creator. Кстати, проблема UI решается - есть встроенный редактор.  

Если используется clion, но вместо с qt -можно использовать отдельно qtdesigner.  

В принципе - то же самое касается и прочих вариантов.  
  

CMakeList - смотрите в сторону систем сборки (вкратце - строят по проекту набор инструкций для компилятора) и cmake в частности.  

>>>Точно не знаю работает ли DirectX под Linux<<<  

Нет, но (в отрыве от 3rd-party компонентов) нужно ли? Вроде как по возможностям свежий OpenGL не особо уступает.  

>>>Даже если так то есть Wine<<<  

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

 День добрый.  
  

Я думаю что задача не совсем правильно поставлена. Нужно определиться с целью. Целью является изучение С, или переход на линукс?  

Я так понимаю что вы сейчас всё ещё на winOS. Предлагаю самый безболезненный подход к переходу. Установите виртуальную машину, на ней создайте с десяток разделов, и поставте туда популярные варианты Линукс. В паритете можно графику Gnome и KDE. Разница среди систем будет в репозитарии (что-то вроде Андроид маркета, но где в основном всё бесплатно). Попробуйте установить любимый видеопроигрыватель, походите по вэб страницам, выполните просто привычную вам работу но в новой ОС. И посмотрите с которой вам будет удобнее, менее геморнее и где будет больше документации.  

Точно так же выбирайте и IDE, зачастую в репозитарии есть таких штук 3-5 рекомендуемых. Установите их, погоняйте их, соберите в конце концов "Привет Мир". Так вы столкнётесь с первыми зависимостями и камнями. И там где будет проще решать - ту систему и ИДЕ и выбирайте.  
  

Для азов программирования на С, обычного Vim и make хватит. Большие проекты тяжелее уже писать со всеми зависимостями.  
  

Меня настораживает другое. Если вы хотите изучать С#, соответсвенно будете ориентироваться на платформы Windows и .NET. То есть вам всё равно нужно будет по них собирать и тестировать. А значит иметь виндоус где то на виртуальной машине. Отладка будет сложнее, когда малейшую сборку, нужно будет таскать с раздела на раздел. 

 Короче я пока читал, потерял пару раз идею вопроса, поэтому скажу следующее. Если вы собирали под виндой свои программы с помощью MinGW, то особых проблем со сборкой под линуксом не будет, так как это и есть GCC портированный под винду. Что касается IDE - выбор есть всегда. Можно, наверно, и Eclipse с плагином под C++ настроить, можно и QtCreator использовать или Netbeans. Я рекомендую QtCreator. По поводу C# - есть MonoDevelop, сам не пробовал, но вроде как норм. По поводу DirectX - скорее всего придется переходить на OpenGL, если хотите кроссплатформенности. 

 Нашел удобным msys2 + Clion под Windows, и Arch Linux + Clion. gcc 5 есть в и там и там. pacman/pacaur оказались для меня очень удобными (pacman используется как в Arch так и в msys2). Поиск и установка пакетов как assimp, sdl2, opencl, итд очень удобна, и все (отмечу, что в msys2 пакетов меньше, но для разработки достаточно) работает без проблем. msys2 это форк cygwin, но более демократичный (на мой взгляд, со стороны лицензирования), хотя и урезанный. Clion, хотя и не бесплатный, но для новичка, как я, хороший выход кросс платформенной IDE. cmake очень нравиться, сборка моей программы без проблем работают и под windows и linux. Прошел vimtutor и этого хватило для git submit . . Конечно DirectX поменять на OpenGL и OpenCL и посмотреть на ОpenMP. Удачи.