Предположим, что структура исходного проекта, использующего 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, ...)