понедельник, 14 февраля 2011 г.

Настройка проекта для компиляциями под разными операционными системами

Файл .pro, создаваемый программой QtCreator содержит инструкции как собирать проект основные команды
SOURCES - исходники
HEADERS - заголовки
TEMPLATE - шаблон проекта например app или lib
INCLUDEPATH - путь к используемым заголовкам
LIBS- используемые библиотеки

Так-же имеется куча дополнительных полезныхкомманд
CONFIG - это самое общая и полезная команда для автоматической конфигурации проекта в переменную конфиг можно записать все что угодно и дальше проверять что храниться в конфиге
Например CONFIG += plugin opencv qwt
MOC_DIR - директория куда будем складывать moc файлы, созданные qmake
OBJECTS_DIR - директория куда будут сохранены объекты
DEFINES - добавляет инструкцию препроцессора
Пример  DEFINES+= USEOPENCV
далее в коде:
#ifdef USEOPENCV
 //DO SMTH
#endif

ключевые слова
win32 - сборка происходит для Windows
unix - сборка проекта для Linux
debug - сборка проекта в режиме отладки
release - сборка проекта в релиз режиме

Рассмотрим пример подключение OpenCV для Linux и Windows
OPENCVDIR = "C:/Develop/opencv-1.0.x/opencv" #Директория в которой лежит OpenCV
win32:{ #Если сборка под windows
    opencv{ #если в CONFIG мы добавили CONFIG+=opencv
    exists($$OPENCVDIR) {#Проверка существует ли директория 
            DEFINES += USEOPENCV #Добавляем define
            INCLUDEPATH += $${OPENCVDIR}/cv/include \ #Путь к заголовкам
                $${OPENCVDIR}/cxcore/include \
                $${OPENCVDIR}/otherlibs/highgui
            LIBS += -L$${OPENCVDIR}/lib \ #Путь к библиотекам
                -lcv \
                -lcxcore \
                -lhighgui      
         }
    }
}
unix:{ #В случае Linux все проще т.к. все библиотеки и заголовки обычно лежат в системных папках
opencv{
        LIBS += -lcv \
            -lcxcore \
            -lhighgui
        message("OpenCV libraries connected")  #Сообщение о том что все подключено
    }
}

Естественно такой громоздкий код не охота включать в каждый проект (особенно если проект состоит из множества частей например с плагинами)

Для этого придуманы файлы .pri
Создаете файл .pri, копируете в него настройку сборки и подключаете к pro файлу коммандой
include
Пример:
include(EthoStudioSDK/ethostudioconfig.pri )

Вроде все. Удачи!

Комментариев нет:

Отправить комментарий