Makefile: Как установить проект с файлом pkg-config

Я пытаюсь сделать чистую установку моего проекта С++:

  • экспортирует .h внутри include/dir
  • скомпилируйте .dylib (macos) или .so (ubuntu) внутри каталога lib/

Теперь возникает вопрос: Как мне написать/экспортировать файл pkg-config .pc с make-файлом, который будет соответствовать моему проекту. В Mac OS и Linux я могу просто вызвать

LDFLAGS=$(shell pkg-config --libs my_project) 
CPPFLAGS=$(shell pkg-config --cflags my_project)

В других make-файлах, чтобы включить флаги.

Это то, что я сделал до сих пор (macos):

install : $(OBJS)
  mkdir -p $(INSTALL_LIB_DIR)
  $(CXX) -dynamiclib $^ $(CPPFLAGS) $(LDFLAGS) -o $(INSTALL_LIB_DIR)/lib$(ENGINE_LIB_NAME).dylib
  mkdir -p include
  cp src/*.h include/
  cp src/*.tpp include/
  mv include $(INSTALL_DIR)
  rm -rf include
  rm -rf lib

uninstall:
  @echo "Removing dir " $(INSTALL_DIR)
  rm -r $(INSTALL_DIR)

Большое спасибо. Если это невозможно сделать, я попробую сделать это с помощью cmake...


person Emmanuel Jay    schedule 19.06.2015    source источник
comment
Вопрос о том, что нужно сделать, чтобы pkg-config работал с вашим проектом? Какой файл/и т.д. вам нужно создать для этого?   -  person Etan Reisner    schedule 19.06.2015
comment
@EtanReisner Извините, если я недостаточно ясен. Я хочу добавить информацию о моем проекте в pkg-config, чтобы другим людям не приходилось думать о других зависимостях, которые они должны связать с моим проектом. Я понимаю, что для этого мне нужно создать специальный файл .pkg-config, и я хотел бы сделать это непосредственно из make-файла.   -  person Emmanuel Jay    schedule 19.06.2015
comment
Тогда да, вы хотите знать, как pkg-config узнать о вашем проекте. Вам нужно написать файл .pc для вашего проекта и установить его. Запустите pkg-config --debug и вы увидите, какие файлы он читает. Просмотрите некоторые из них, чтобы понять общую идею, а затем просмотрите Руководство по pkg -конфигурация. Также полезна справочная страница pkg-config.   -  person Etan Reisner    schedule 19.06.2015
comment
@EtanReisner Но, поскольку многие делали это раньше, я ожидал, что существуют инструменты для записи этих файлов .pc непосредственно из make-файла, не так ли?   -  person Emmanuel Jay    schedule 19.06.2015
comment
Это просто текстовые файлы. В них нет ничего особенного. И никакой make не сделает для вас ничего подобного. Автоинструменты/и т.д. могут быть вещи, которые облегчают вам ввод правильных значений, но это не одно и то же.   -  person Etan Reisner    schedule 19.06.2015
comment
@EtanReisner Хорошо, большое спасибо. Я видел, что это можно сделать из cmake, и мне все равно нужно настроить свой проект с помощью cmake, так что это подождет;). Я опубликую ответ о том, как я сделал это с помощью cmake, как только закончу;) Спасибо!   -  person Emmanuel Jay    schedule 19.06.2015