Введение в использование GCC / make для пользователей Visual Studio - PullRequest
15 голосов
/ 24 июля 2011

Я разработал инструмент на C ++ с использованием Visual Studio 2010, который я также хотел бы развернуть на системах Linux.Сам код запрограммирован полностью независимым от платформы, используя только STL и стандартную библиотеку.

Теперь моя проблема: у меня нет опыта работы с Linux.

У меня, однако,пытался получить некоторые другие программы, которые я написал для компиляции с использованием GCC, и в результате я получил кучу ошибок, на которые у меня ушло 3 часа, чтобы решить - ужасы!то же самое произойдет, только намного хуже, если я попытаюсь перенести свой текущий проект на GCC.

Мои вопросы:

  • Что делает Visual Studioпользователь должен знать, чтобы успешно запустить свою программу на Linux?(мне нужно выучить make?)

  • Знаете ли вы хороший источник, который охватывает не тему программирования GCC / Linux в целом, а конкретно проблему переключенияиз среды Visual Studio?

Ответы [ 2 ]

10 голосов
/ 24 июля 2011

Я рекомендую вообще пропустить make, это довольно старая технология, и вы можете столкнуться с проблемами переносимости при ее использовании.Вместо этого изучите другую систему сборки, такую ​​как CMake http://www.cmake.org/ или SCons http://www.scons.org/

. Я сам использую CMake и нахожу ее превосходной.Вы пишете очень простые сценарии сборки (вы легко можете начать работу через час или два), и он генерирует файлы сборки для вас.Самым большим преимуществом является то, что он может генерировать make-файлы практически для любого компилятора или системы сборки, которую вы можете захотеть.Он может генерировать стандартные make-файлы Unix, проекты Microsoft Visual C ++, проекты XCode, проекты Code :: Blocks, даже проекты KDevelop и Eclipse CDT4.

Я сам не использовал SCons, но знаю, что на самом деле он собираетВаша программа для вас и работает на Python.

Начало работы в Linux / Unix может означать что угодно.Выход из Visual Studio может означать переход в Eclipse или другую IDE, что так же просто, как изучение новой IDE, или это может означать переход прямо к оболочке и забывание, что вы когда-либо знали, как выглядит IDE.Моя личная рекомендация - придерживаться IDE - Eclipse великолепен как отраслевой стандарт и очень кроссплатформенен (просто получите плагин CDT).

По теме GCC вы, вероятно, не оченьочень часто вызывайте его, если вы пишете сценарии CMake, так как CMake сгенерирует make-файлы.Простейшие аргументы командной строки:

g++ <source-files> -o <output-name> -I <another include directory> -l <library to link to>

в качестве примера:

g++ helloworld.cpp -o world.out -I /usr/include -l mylib

Чтобы запустить исполняемый файл из оболочки, перейдитев каталог, в котором он находится, и введите:

./world.out

Обратите внимание, что вывод по умолчанию при вызове g ++ (то есть g++ helloworld.cpp) - a.out.

И этовсе, что вам действительно нужно знать!Остальное приходит легко.Вы научитесь любить Unix, и я действительно рекомендую изучать оболочку, даже если вы идете по пути IDE.Это может значительно облегчить вашу жизнь.

РЕДАКТИРОВАТЬ: Итак, чтобы перенести вашу программу на Linux и GCC с CMake, вот что вы сделали бы:

  1. Получить CMake
  2. Запишите файл CMakeLists.txt в исходный каталог (его использует формат Makefile, который использует CMake)
  3. Вызовите CMake в этом каталоге.CMake автоматически проанализирует файл CMakeLists.txt и сгенерирует сценарии сборки по вашему выбору
  4. Сборка с любой системой сборки, которую вы использовали.Если вы используете стандартные Make-файлы Unix, это будет означать просто перейти в каталог сборки и набрать make в оболочке
  5. Ваш проект будет собран, и все готово!

PS: я никогда не учил нормальный make, хотя он определенно имеет свое применение.CMake нашел во мне нетерпеливого пользователя.

4 голосов
/ 24 июля 2011

Я собирался сказать "man g ++", но это руководство очень длинное в строках.

просто введите

g++ main.cpp utility.cpp 

g ++ автоматически скомпилирует и свяжет main.cpp, утилиту.cpp в файл с именем a.out введите ./a.out в командную строку для запуска скомпилированного кода.

вам не нужно изучать make, но если вы это сделаете, простые сценарии make занимают всего 4-5 строккода.Его довольно легко набрать, но на самом деле он сильно отличается для пользователя Visual Studio, поэтому он совершенно не дружелюбен, если вы вставляете плохой код в свой Makefile.

Об изучении Linux, есть чему поучиться.Я даже не могу сказать, с чего начать, но секретов нет.В отличие от продуктов Microsoft, где вы должны изучить обходной путь для выполнения своего кода.

о, и вот информация g ++: http://homepages.gac.edu/~mc38/2001J/documentation/g++.html

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