Arhn - архитектура программирования

Что означает $‹ при использовании в аргументе g++?

Я использую библиотеку с образцом приложения. Образец make-файла содержит $< в аргументах:

all:test.cpp
    g++ -Wl,--no-as-needed -o Example $<
clean:
    rm -f SampleApp11

Я просмотрел это и tutorialspoint сказал, что

$‹ имя связанного файла, вызвавшего действие.

На другом веб-сайте говорится, что:

это правило замены суффикса для построения .o из .c. в нем используются автоматические переменные $‹: имя пререквизита правила (файл .c) и $@: имя цели правила (.o файл) (см. раздел руководства gnu make об автоматических переменных) .c.o: $(CC) $(CFLAGS) $(INCLUDES) -c $‹ -o $@

Я все еще в замешательстве, что это значит?

08.10.2016

  • В вашем примере это первая зависимость (файл) после цели all: - test.cpp. 08.10.2016
  • Ааа, так <$ сообщает g++, какой файл компилировать, это правильно? 08.10.2016
  • Обратите внимание, что это не имеет ничего общего с g++. Это make заменяет это перед вызовом g++. g++ никогда не видит $<. Если бы это было так, он бы воспринял его как имя файла и, вероятно, выдал бы сообщение об ошибке о том, что файл с таким именем не найден. 08.10.2016
  • Изменение строки на echo test: $< сообщило бы вам, что она делает, тогда вы могли бы поискать ее в документации нужного инструмента (не GCC!), чтобы узнать, что она означает. Постарайтесь привыкнуть проводить исследования и экспериментировать таким образом. 08.10.2016
  • @LightnessRacesinOrbit Извиняюсь, я провел значительное количество исследований и все еще не понял/запутался. Это моя первая неделя написания кода C/C++ и его компиляции - мой предыдущий опыт был связан с интерпретируемыми языками. 08.10.2016
  • Я уверен, что даже в мире интерпретируемых языков вы знакомы с проведением исследований и экспериментов :) 08.10.2016

Ответы:


1

На самом деле это не имеет ничего общего с компилятором, это часть синтаксиса Makefile, и он подставляется перед запуском компилятора.

В вашем примере это первая зависимость (файл) после цели all: - test.cpp.

Основная функция Makefile заключается в создании цели при изменении зависимости:

target: dependency.cpp
    rule to create target (using dependency.cpp)

Обычно $< является входом для компилятора, а $@выходом.

Это как если бы это было (недопустимый Makefile):

$@: $<
    g++ -o $@ $<

Насколько я их помню, @ напоминает мишень (как в стрельбе по мишеням), а < напоминает стрелу. Итак, я представляю стрелку, указывающую на цель:

@ <-------- (think "Robin Hood")

YMMV

08.10.2016

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..