Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: qmake <=> CMake
Форум на CrossPlatform.RU > Разработка > Инструменты разработчика
Litkevich Yuriy
Задумал перевести один из своих проектов на 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
Собирать статические библиотеки и подключать уже их.
Litkevich Yuriy
Цитата(BRE @ 5.5.2010, 16:39) *
Собирать статические библиотеки и подключать уже их.
для secondlib это всего два файла исходников (h и cpp). Как-то не сподручно из них делать библиотеку.
И потом, это единственный выход?
BRE
Думаю выход не единственный, но я всегда делаю библиотеки.
Статическая библиотека - это архив объектных файлов, ничего навороченного в ней нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.