Как добавить параметры команды `make`?

Я пытаюсь добавить опции к команде make. Например, чтобы добавить -l вариант для включения библиотек. Что-то вроде clang filename.c -o filename - clang filename.c -o filename -l{libary}

Что мне делать и какой файл мне следует редактировать?

1
задан 20 December 2017 в 17:43

12 ответов

Я использовал export LDLIBS='-l' в моем файле .bashrc.

0
ответ дан 22 May 2018 в 16:53

Я использовал export LDLIBS='-l' в моем файле .bashrc.

0
ответ дан 18 July 2018 в 00:47

Я использовал export LDLIBS='-l' в моем файле .bashrc.

0
ответ дан 24 July 2018 в 17:17

Поскольку у вас нет Makefile, компиляция и привязка вашей программы зависит от неявных правил, встроенных в make. В случае исходного кода C неявное правило для связывания одного объектного файла:

$(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS) 

Таким образом, вы можете добавлять библиотеки через переменную LDLIBS, например

make LDLIBS='-lfoo'
[d3 ] или

LDLIBS='-lfoo' make

См. статью GNU: 10.2 Каталог встроенных правил

4
ответ дан 22 May 2018 в 16:53
  • 1
    где я их помещаю? – Satori 20 December 2017 в 18:09
  • 2
    @Satori вы можете добавить их в командную строку make - точно так, как я писал. Или, если вы слишком ленивы, чтобы набирать их, сделайте псевдоним alias make='make "LDLIBS=-lm"', но я не рекомендую его - как только вы начнете изменять команды сборки, лучше создать минимальный Makefile для вашей программы. – steeldriver 20 December 2017 в 19:00

Согласно fedorqui, псевдоним не может принять параметр. Следовательно, вы должны создать функцию в ~/.bashrc.

acp ()
{
clang "$1".c -o "$1" -l
}

Выполнить с помощью

acp "filename"

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

Обратите внимание, что я не тестировал это.

Ссылка: Пользовательский вход в Bash Alias?

1
ответ дан 22 May 2018 в 16:53

Если бы я понял вас правильно, самым простым было бы сделать псевдоним в ваших .bashrc или .zshrc или любой другой оболочке, которую вы используете.

Я бы не рекомендовал вам что-то редактировать где-то еще.

Но вы можете посмотреть, где вы находите программу, некоторые программы - это скрипты, написанные, например, в perl, и их можно редактировать по своему желанию

0
ответ дан 22 May 2018 в 16:53
  • 1
    как я должен его использовать, потому что имя файла будет отличаться каждый раз? – Satori 20 December 2017 в 17:17
  • 2
    Вы можете работать с параметрами этого. Я не вижу большую картину вашей ситуации, – BO41 20 December 2017 в 17:21
  • 3
    Я просто пытаюсь включить библиотеку при компиляции кода, но команда make не имеет команды -l и запускает clang filename.c -o filename, поэтому я хочу включить -l в команду make, чтобы каждый время, которое я использую, работает clang filename.c -o filename -l – Satori 20 December 2017 в 17:36

Согласно fedorqui, псевдоним не может принять параметр. Следовательно, вы должны создать функцию в ~/.bashrc.

acp () { clang "$1".c -o "$1" -l }

Выполнить с помощью

acp "filename"

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

Обратите внимание, что я не тестировал это.

Ссылка: Пользовательский вход в Bash Alias?

1
ответ дан 18 July 2018 в 00:47

Если бы я понял вас правильно, самым простым было бы сделать псевдоним в ваших .bashrc или .zshrc или любой другой оболочке, которую вы используете.

Я бы не рекомендовал вам что-то редактировать где-то еще.

Но вы можете посмотреть, где вы находите программу, некоторые программы - это скрипты, написанные, например, в perl, и их можно редактировать по своему желанию

0
ответ дан 18 July 2018 в 00:47

Поскольку у вас нет Makefile, компиляция и привязка вашей программы зависит от неявных правил, встроенных в make. В случае исходного кода C неявное правило для связывания одного объектного файла:

$(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)

Таким образом, вы можете добавлять библиотеки через переменную LDLIBS, например

make LDLIBS='-lfoo'

или

LDLIBS='-lfoo' make

См. статью GNU: 10.2 Каталог встроенных правил

4
ответ дан 18 July 2018 в 00:47

Согласно fedorqui, псевдоним не может принять параметр. Следовательно, вы должны создать функцию в ~/.bashrc.

acp () { clang "$1".c -o "$1" -l }

Выполнить с помощью

acp "filename"

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

Обратите внимание, что я не тестировал это.

Ссылка: Пользовательский вход в Bash Alias?

1
ответ дан 24 July 2018 в 17:17

Если бы я понял вас правильно, самым простым было бы сделать псевдоним в ваших .bashrc или .zshrc или любой другой оболочке, которую вы используете.

Я бы не рекомендовал вам что-то редактировать где-то еще.

Но вы можете посмотреть, где вы находите программу, некоторые программы - это скрипты, написанные, например, в perl, и их можно редактировать по своему желанию

0
ответ дан 24 July 2018 в 17:17
  • 1
    как я должен его использовать, потому что имя файла будет отличаться каждый раз? – Satori 20 December 2017 в 17:17
  • 2
    Вы можете работать с параметрами этого. Я не вижу большую картину вашей ситуации, – BO41 20 December 2017 в 17:21
  • 3
    Я просто пытаюсь включить библиотеку при компиляции кода, но команда make не имеет команды -l и запускает clang filename.c -o filename, поэтому я хочу включить -l в команду make, чтобы каждый время, которое я использую, работает clang filename.c -o filename -l – Satori 20 December 2017 в 17:36

Поскольку у вас нет Makefile, компиляция и привязка вашей программы зависит от неявных правил, встроенных в make. В случае исходного кода C неявное правило для связывания одного объектного файла:

$(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)

Таким образом, вы можете добавлять библиотеки через переменную LDLIBS, например

make LDLIBS='-lfoo'

или

LDLIBS='-lfoo' make

См. статью GNU: 10.2 Каталог встроенных правил

4
ответ дан 24 July 2018 в 17:17
  • 1
    где я их помещаю? – Satori 20 December 2017 в 18:09
  • 2
    @Satori вы можете добавить их в командную строку make - точно так, как я писал. Или, если вы слишком ленивы, чтобы набирать их, сделайте псевдоним alias make='make "LDLIBS=-lm"', но я не рекомендую его - как только вы начнете изменять команды сборки, лучше создать минимальный Makefile для вашей программы. – steeldriver 20 December 2017 в 19:00

Другие вопросы по тегам:

Похожие вопросы: