Podczas tworzenia projekt w Qt4 z poziomu QtCreatora, do budowania projektu (generowania plików Makefile i tak dalej) QtCreator używa narzędzia qmake. Okazuje się jednak, że to nie wszystko:) QtCreator potrafi także używać CMake! Niestety nie ma póki co gotowego narzędzia, które automatycznie przekonwertuje projekt z qmake na CMake. Możemy jednak zrobić to sami. Jak? O tym jest właśnie ten tutorial.

Tworzymy CMakeLists.txt
Na sam początek warto wiedzieć, że sercem CMake jest plik CMakeLists.txt
. To w nim definiowane są zasady, jakie biblioteki trzeba znaleźć i dołączyć, które pliki zbudować itd.
W pierwszym kroku trzeba zatem utworzyć plik CMakeLists.txt
. Dodajemy go w głównym katalogu projektu. Natomiast folder wyżej (ponad źródłami i plikiem CMakeLists.txt
) warto stworzyć dodatkowy folder, w którym będzie budowany nasz program.
Oto wersja pierwsza przykładowego pliku CMakeLists.txt
– oferuje automatyczne wyszukiwanie plików ui i moc i generowanie na tej podstawie kodu. Odpowiadają za to zmienne: CMAKE_AUTOMOC
i CMAKE_AUTOUIC
.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
PROJECT(V1)
set(QT_SRC ${QT_SRC} "${PROJECT_SOURCE_DIR}")
https://wiki.qt.io/Using_CMake_build_system
FIND_PACKAGE(Qt4 REQUIRED QtGui QtXml)
INCLUDE(${QT_USE_FILE})
QT4_WRAP_UI(UISrcs mainwindow.ui)
QT4_WRAP_CPP(MOCSrcs mainwindow.h)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
INCLUDE_DIRECTORIES(${QT_SRC})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src/gui)
add_executable(DemoQt ${PROJECT_SOURCE_DIR}/main.cpp mainwindow)
TARGET_LINK_LIBRARIES(DemoQt Qt4::QtGui Qt4::QtXml)
Aby wypisać wartości zmiennych, warto użyć polecenia MESSAGE
, np.:
MESSAGE("MyProjectLib_src:\t\t${MyProjectLib_src}")
Moje wartości zmiennych są zatem następujące:
MOCSrcs |
/home/d9k/ProstyProjektQtCmake/qponiższytcreator-build/moc_mainwindow.cxx |
MOCSrcs |
/home/d9k/ProstyProjektQtCmake/qtcreator-build/ui_mainwindow.h |
QT_SRC |
/home/d9k/ProstyProjektQtCmake/zrodla |
PROJECT_SOURCE_DIR |
/home/d9k/ProstyProjektQtCmake/zrodla |
QT_USE_FILE |
/usr/share/cmake-2.8/Modules/UseQt4.cmake |
CMAKE_CURRENT_SOURCE_DIR |
/home/d9k/ProstyProjektQtCmake/zrodla |
CMAKE_CURRENT_BINARY_DIR |
/home/d9k/ProstyProjektQtCmake/qtcreator-build |
QT_LIBRARIES |
/usr/lib/x86_64-linux-gnu/libQtGui.so;/usr/lib/x86_64-linux-gnu/libQtCore.so |
Okazuje się jednak, że używanie automatu nie zawsze jest dobre – zwłaszcza, jeśli projekt jest rozbudowany i struktura katalogów jest drzewiasta. Wzorując się na poniższych wpisach w serwisie StackOverflow, udało mi się zmodyfikować poprzednią wersję, aby nie używała automatycznego przypisywania plików ui
i moc
.
Przechodzimy na sterowanie manualne
Usuwamy zatem fragment ze zmiennymi CMAKE_AUTOMOC
i CMAKE_AUTOUIC
, by zastąpić go własnym wskazaniem ścieżek: Czytaj dalej →