crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> qmake <=> CMake
Litkevich Yuriy
  опции профиля:
сообщение 5.5.2010, 12:31
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Задумал перевести один из своих проектов на CMake. И никак не пойму, как создать иерархическую систему в стиле pri-файлов, т.е. чтобы были макимально независимые куски. По этому решил тут тему создать. Что-то вроде "копилки решений"

Предположим, что структура исходного проекта, использующего qmake такова:

/
| - project.pro
| - 3rdparty/
|     | - firstlib/
|     |    | - firstlib.pri
|     |    | - ...
|     | - secondlib/
|     |    | - secondlib.pri
|     |    | - ...
| - src/
|     | - src.pro
|     | - main.cpp
|     | - first.h
|     | - first.cpp
|     | - second.h
|     | - second.cpp


При этом корневой файл проекта (project.pro) выглядит так:
TEMPLATE  = subdirs
CONFIG    += debug_and_release
# Input
SUBDIRS   += src

src.pro:
TARGET = test
TEMPLATE = app
DESTDIR = ..
# Input
HEADERS += first.h second.h
SOURCES += main.cpp first.cpp second.cpp
INCLUDEPATH += ./
include(../3rdparty/firstlib/firstlib.pri)
include(../3rdparty/secondlib/secondlib.pri)

При этом pri-файлы из 3rdparty выглядят так:
firstlib.pri
INCLUDEPATH       +=    $$PWD/include
QMAKE_LIBDIR   +=    $$PWD/build
LIBS           +=  -lfirst

secondlib.pri
SOURCES += $$PWD/firstlib.cpp
HEADERS += $$PWD/firstlib.h
INCLUDEPATH +=    $$PWD/

Т.е. получается, что я могу вообще не заглядывать в pri-файлы, мне нужно только подключить их к проекту, а они сами добавят в переменные SOURCES, HEADERS, ... нужные значения.

В CMake по идее в каждый каталог нужно поместить CMakeLists.txt. В выше стоящем каталоге в одноимённом файле нужно добавить строчку add_subdirectory( имя катлога ), но как создать аналог глобальных переменных, как у qmake (SOURCES, HEADERS, ...)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.5.2010, 12:39
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Собирать статические библиотеки и подключать уже их.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.5.2010, 12:46
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(BRE @ 5.5.2010, 16:39) *
Собирать статические библиотеки и подключать уже их.
для secondlib это всего два файла исходников (h и cpp). Как-то не сподручно из них делать библиотеку.
И потом, это единственный выход?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.5.2010, 12:55
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Думаю выход не единственный, но я всегда делаю библиотеки.
Статическая библиотека - это архив объектных файлов, ничего навороченного в ней нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.4.2024, 20:06