2014-02-17 4 views
-1

У меня есть строка в файле make для компиляции c-программы, которая выглядит следующим образом: $(CC) -c -o [email protected] $< $(CFLAGS). Я должен каждый раз изменять конкретную строку в коде и компилировать снова. Модификация - это просто аргумент функции. У меня есть аргумент в одном файле, и я использую утилиту sed для изменения моего источника c и компиляции. Я хочу посмотреть, какие из аргументов приводят к успешной компиляции. Я пытался использовать этот $(CC) -c -o [email protected] $< $(CFLAGS) ; echo $? >status, где я надеялся, что если компиляция прошла успешно status файл будет иметь запись 0. Но я вижу имя исходного файла в файле status. Я узнал, что $? также является автоматической переменной. Как я могу прочитать переменную оболочки $? в файле makefile? Я попытался использовать $(CC) -c -o [email protected] $< $(CFLAGS) ; echo $$? >status и $(CC) -c -o [email protected] $< $(CFLAGS) ; echo $(shell echo $?) >status, не получив правильных результатов.Использование переменной оболочки в Makefile

+0

Экранирование '' 'правильно (с использованием' echo $$?> Status'). Что вы подразумеваете под «без получения правильных результатов»? Какие результаты вы получаете? – MadScientist

+0

Вы используете Unix-подобную операционную систему? Потому что в Windows '$?' Называется '% errorlevel%' – SzG

ответ

0

версия

echo $$? > status 

определенно работает для меня. Какую ОС вы используете? Каковы неправильные результаты при использовании $$??

Если вы находитесь в Windows, то нет $?, вместо этого вы можете использовать %errorlevel%.

+0

Некоторое время как 'echo $$?', Похоже, работает. Я уверен, что я пробовал это, и я получал имя исходного файла в 'status'. Спасибо за ответ – Gautam

+0

@MadScientist escaping с '$' работает сейчас, я пробовал его раньше, и я получал исходное имя файла в файле 'status'. Кажется, я раньше делал что-то неправильно. – Gautam

Смежные вопросы