Общий путь к каталогу make-файла GNU

После 7 августа 2016 года вы все равно можете сделать свой вызов следующим образом:

http://graph.facebook.com/?id=https://www.apple.com/

, но формат ответа будет другим: он не будет

{
  "id": "http://www.apple.com",
  "shares": 1146997
}

, но вместо этого будет

{
   "og_object": {
      "id": "388265801869",
      "description": "Get a first look at iPhone 7, Apple Watch Series 2, and the new AirPods \u2014 the future of wireless headphones. Visit the site to learn more.",
      "title": "Apple",
      "type": "website",
      "updated_time": "2016-09-20T08:21:03+0000"
   },
   "share": {
      "comment_count": 1,
      "share_count": 1094227
   },
   "id": "https://www.apple.com"
}

. Поэтому вам нужно обработать ответ следующим образом:

reponse_variable.share.share_count
48
задан cdleary 27 November 2008 в 04:35
поделиться

3 ответа

Необходимо быть в состоянии использовать переменная MAKEFILE_LIST , как это:

# This must be the first line in Makefile.common
TOP := $(dir $(lastword $(MAKEFILE_LIST)))

Из документации:

, Как делают чтения различными make-файлами, включая любого полученный из переменной MAKE-ФАЙЛОВ, командной строки, файлы по умолчанию, или от включают директивы, их имена будут автоматически добавлены к переменной MAKEFILE_LIST. Они добавляются прямо, прежде делают, начинает анализировать их. Это означает, что, если первая вещь make-файл делает, исследуют последнее слово в этой переменной, это будет название текущего make-файла. Как только текущий make-файл использовал, включают, однако, последнее слово будет просто включенным make-файлом.

68
ответ дан lesmana 7 November 2019 в 22:32
поделиться

Имейте Вас, пытался делать:

# Makefile.common
TOP ?= $(shell pwd)
COMPONENT_DIR := $(TOP)/component
COMPONENT_INC := $(COMPONENT_DIR)/include
COMPONENT_LIB := $(COMPONENT_DIR)/libcomponent.a

# other_component/Makefile
TOP ?= ..
include ../Makefile.common

Используя? = конструкция помешает TOP переопределяться, если это будет уже установлено. Можно установить его на соответствующее значение на основе того, где Вы находитесь в дереве, когда Вы вызываете, делают. Я признаюсь, что это было некоторое время, так как я использовал GNU, делают так, это не может работать или, возможно, нуждается в некоторых тонких настройках.

2
ответ дан tvanfosson 7 November 2019 в 22:32
поделиться

Это плохой стиль, потому что он добавляет другую зависимость (то есть двоичный файл realpath). В зависимости от вашего варианта использования это может быть приемлемо.

ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))

Если у вас не установлен realpath:

$ sudo apt-get install realpath # on debian and derivatives

Изменить : обязательно используйте : = вместо = , потому что последнее вызывает make для использования позднего связывания, и MAKEFILE_LIST мог быть изменен из-за более поздних включений.

9
ответ дан 26 November 2019 в 18:50
поделиться
Другие вопросы по тегам:

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