Как вызвать make install для одного подкаталога проекта Qt

Я работаю над пользовательской библиотекой и хочу, чтобы пользователи могли просто использовать ее, добавив:

CONFIG += mylib

к их профессиональным файлам. Это можно сделать, установив файл mylib.prf в%QTDIR%/mkspec/features. Я проверил в проекте Qt Mobility, как создать и установить такой файл, но есть одна вещь, которую я хотел бы сделать по-другому.

Если я правильно понял файлы pro / pri Qt Mobility, то внутри примеров проектов они на самом деле не используют CONFIG += mobility, вместо этого они добавляют источники QtMobility для включения пути и делятся каталогом *.obj с проектом основной библиотеки. Для моей библиотеки я хотел бы иметь примеры, которые являются максимально независимыми проектами, то есть проектами, которые могут быть скомпилированы из любого места после компиляции и установки MyLib.

У меня следующая структура каталогов:

mylib
  |
  |- examples
  |- src
  |- tests
  \- mylib.pro

Кажется, что самый простой способ добиться того, что я описал выше, это создать mylib.pro следующим образом:

TEMPLATE = subdirs
SUBDIRS += src
SUBDIRS += examples
tests:SUBDIRS += tests

И каким-то образом принудительно вызывать "cd src && make install" после сборки src. Каков наилучший способ сделать это?

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

1 ответ

Вы можете создать другую цель и добавить ее в переменную SUBDIRS, которая хорошо работает, если вы понимаете, что простые.pro-файлы также могут быть целью. Я бы предложил что-то вроде этого

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS += src
tests:SUBDIRS += tests
SUBDIRS += src/install.pro
SUBDIRS += examples

В этом случае я убедился, что цели subdir будут выполняться по порядку, путем добавления переменной config. Я переместил тестовую компиляцию до установки, что для меня имеет смысл - вы должны проверить, работает ли код, прежде чем приступить к его установке. Важным дополнением является прямая ссылка на файл install.pro внутри вашего исходного каталога. (Вы также можете поместить это в локальный каталог, если хотите сохранить src более чистым.) В этом случае у вас должны быть команды для установки компонентов, которые вы хотите установить.

В подобных ситуациях часто бывает полезно разделить список источников и заголовков в файле, который может быть включен в несколько файлов.pro, как таковой:

SRC /sources.pri:

HEADERS += foo.h
SOURCES += foo.c

SRC /src.pro

include(sources.pri)
#...

SRC /install.pro

include(sources.pri)
#...
Другие вопросы по тегам