Файл CMakeLists.txt в директории модуля:
Код: Выделить всё
project(FirstModule)
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 COMPONENTS QtCore QtGui REQUIRED)
include(${QT_USE_FILE})
include_directories(${QT_INCLUDES})
# Мы будем собирать отдельный файл Qt-плагина
add_definitions(-DQT_PLUGIN)
add_definitions(-DQT_SHARED)
set(CMAKE_SHARED_LIBRARY_PREFIX "")
# Отключить лишний вывод в консоль
set(CMAKE_VERBOSE_MAKEFILE 0)
# Включить отладку
set(CMAKE_BUILD_TYPE Debug)
# Помимо стандартных папок, подключим папку с исходниками основного приложения
include_directories("../../" ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
# Возьмём наши исходники и заголовки
set(CPP "firstmodule.cpp")
set(H "firstmodule.h")
# Подключим исходники и формы приложения
file(GLOB_RECURSE CORE_H "core/*.h")
file(GLOB_RECURSE UI "*.ui" "../../core/*.ui")
# Обработаем все заголовки и формы утилитами Qt
qt4_wrap_cpp(MOC ${H} ${CORE_H} OPTIONS -nw)
qt4_wrap_ui(UI ${UI})
# В конечном счёте линкуем исходные H и CPP, а также выхлопы MOC и UI
add_library(FirstModule SHARED ${CPP} ${H} ${CORE_H} ${UI} ${MOC})Возможно, нюанс в том, что папка с проектом модуля находится внутри папки с проектом основного приложения. Вот тут, например, пишут, что указание родительских путей может вызывать некоторые проблемы. Пробовал сделать как пишут там (через get_filename_component) — ноль эффекта. Ошибки то при линковке, то ещё при компиляции.
Кто-нибудь может направить на путь истинный, а то я сейчас абсолютно не на том и, видимо, где-то использую CMake так, как его использовать нельзя.