Если используется конкретный сборочный файл ядра Makefile - PullRequest
0 голосов
/ 24 августа 2018

Я действительно борюсь с этим Makefile. У меня есть приложение, которое я хочу построить на старом компьютере Fedora, а также на новом компьютере CentOS. Я хочу изменить переменную в зависимости от того, какой компьютер я использую.

Это то, что я пробовал, но, похоже, это не работает.

UNAME := $(uname -r)
ifeq ($(UNAME),2.6.32.11-99.fc12.x86_64)
        DIRS = Control Simulator
else
        DIRS = Control
endif

Мой вопрос: как я могу заставить это работать в каком-то отдельном Makefile для тестирования? Это дает мне ошибку "*** Нет целей. Стоп" в настоящее время. После этого я смогу реализовать его в моем настоящем Makefile.

1 Ответ

0 голосов
/ 24 августа 2018

Как говорит ошибка, вам нужно указать цель для сборки. Makefile, который не содержит ничего, кроме присваивания переменных, ничего не сделает. Может быть, вы хотите добавить:

all:
        @echo 'DIRS = $(DIRS)'

чтобы узнать, какое значение вы получили.

Однако я уже вижу, что это не будет работать так, как написано. Синтаксис Makefile не является синтаксисом оболочки, поэтому оператор $(uname -r) пытается развернуть переменную make с именем uname -r (точно так же, как $(FOO) пытается развернуть переменную make с именем FOO). Эта переменная не установлена, поэтому UNAME всегда будет установлен на пустую строку.

Вы, вероятно, хотите вместо этого:

UNAME := $(shell uname -r)

для вызова функции make shell для запуска сценария оболочки и расширения до результатов.

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