Как сделать хост-файл makefile зависимым? - PullRequest
3 голосов
/ 05 ноября 2011

Мне нужно скомпилировать мою программу с некоторыми библиотеками или без них, в зависимости от того, на каком из двух хостов она работает. Я не знаю, что использовать справа от HOST= в моем make-файле, чтобы сделать эту работу так, как я хочу:

   ifeq(${HOST},${ADDITIONAL_LIBS_HOST})
   ADD_LIBS= ...   

${ADDITIONAL_LIBS_HOST} - имя хоста, полученное из echo ${HOSTNAME}

1 Ответ

7 голосов
/ 05 ноября 2011

Несколько мыслей:

  • Это такая ситуация, для которой GNU autoconf был разработан для решения. Запустите ./configure, выясните, какие библиотеки доступны, и сгенерируйте соответствующий Makefile.

  • Вы можете получить текущее имя хоста, выполнив что-то вроде:

    HOST=$(shell hostname)
    

    Вы можете использовать это в своем условном выражении.

  • Вместо этого вы можете сделать так, чтобы ваш Makefile делал что-то вроде:

    include Makefile.local
    

    И затем иметь разные файлы Makefile.local на каждом хосте.

Re: ваш комментарий с данным Makefile:

HOST=$(shell hostname)

all:
    @echo $(HOST)

Будет генерировать следующий вывод:

$ make all
fafnir.local

(Предполагается, что ваш локальный хост - "fafnir.local". Какой мой.)

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