Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: компиляция  (Прочитано 1065 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: компиляция
« Ответ #15 : 13 Апреля 2015, 14:26:31 »
в мане по g++ ничего не нашёл про -MD...
попробовал: никакой разницы не заменил...
объясни, что делает -MD?
Опции gcc (g++) вам вряд ли помогут в вашем вопросе ... их без нужды вообще лучше не трогать...
Там есть такая опция (к компоновщику gcc, правда, относящаяся), как, например, --as-needed, с которой вообще ... "забодаетесь пыль глотать", а в некоторых дистрибутивах (сборках) она по дефаулту включена в LDFLAGS (http://freesource.info/wiki/AltLinux/Sisyphus/devel/UpStream/AsNeeded).

Для вашей проблемы нужен только адекватно написанный Makefile ... ну и, возможно, удачное разбиение кода по файлам.

Пользователь решил продолжить мысль [time]13 Апрель 2015, 15:30:21[/time]:

Пользователь решил продолжить мысль [time]13 Апрель 2015, 12:08:30[/time]:
andeykapas,
и вообще писать на плюсах не используя IDE - это сомнительное удовольствие
Очень спорное мнение.
Холиварить не надо.
Какой холивар?
У меня десяток сданных заказчикам в промышленную эксплуатацию проектов (с моодулями ядра Linux), делавшиеся без их IDE.
Вот святое убеждение что "IDE наше всё" - вот это и есть холивар!
Самый лучший IDE - это интеллектуальный терминал Geany... берите на вооружение. :)
А вообще, использование или не использование IDE - это 100% должно определяться типом проекта.

И имеет прямое отношение к вопросу: "учитесь писать Makefile". :D
« Последнее редактирование: 13 Апреля 2015, 14:31:50 от Olej »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Re: компиляция
« Ответ #16 : 13 Апреля 2015, 17:23:32 »
Попробуй для начала использовать опцию -MD
в мане по g++ ничего не нашёл про -MD...
попробовал: никакой разницы не заменил...
объясни, что делает -MD?

Для использования этой опции надо каждый файл с ней компилить в .o сначала, а потом уже линковать в исполняемый.

Обычно в makefile'ах пишут примерно так
Код: (make) [Выделить]
CPPFLAGS = -MD -Wall $(DEFINES) -std=c++11 $(INCLUDES)


%.o: $(SourceDir)/%.cpp
$(CPP) $(CPPFLAGS) -o $@ $<

all: my_bin_file

my_bin_file: $(patsubst $(SourceDir)/%.cpp,%.o,$(wildcard $(SourceDir)/*.cpp))
$(CPP) $(CPPFLAGS) $(LIB_DIRS) -o $(OutDir)/my_bin_file $^ $(LIBS)

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: компиляция
« Ответ #17 : 13 Апреля 2015, 17:41:21 »
спасибо) в общем, настала пора учить мейк! И слава Богу!

 

Страница сгенерирована за 0.07 секунд. Запросов: 25.