Как вызвать make install для одного подкаталога проекта Qt - PullRequest
4 голосов
/ 13 мая 2010

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

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 Ответ

1 голос
/ 14 мая 2010

Вы можете сделать еще одну цель и добавить ее в переменную 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.pro

include(sources.pri)
#...

ЦСИ / install.pro

include(sources.pri)
#...
...