|
|
(9 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| == A simple example ==
| | {{CMake/Template/Moved}} |
|
| |
|
| Let's just start with a simple example for an application, let's name it, well, kFoo. The CMakeLists.txt below gives the project a name, so that the project files for KDevelop/XCode/MSVC will have a good name. It will then find the KDE 4 installation on the system and setup the required include directories. The list of source files will be put into a variable named mySources, which will be automoced and then used to build an executable from it. The executable and its desktop file will finally be installed.
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/How-To-Build-KDE4-Software here]. |
| <pre>
| |
| project(kfoo)
| |
| | |
| find_package(KDE4 REQUIRED)
| |
| | |
| include_directories( ${KDE4_INCLUDES} )
| |
| | |
| set(mySources main.cpp mywidget.cpp mypart.cpp)
| |
| | |
| kde4_automoc( ${mySources} )
| |
| | |
| kde4_add_executable(kfoo ${mySources})
| |
| | |
| target_link_libraries(kfoo ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )
| |
| | |
| install_targets( /bin kfoo)
| |
| install_files( ${XDG_APPS_DIR} FILES kfoo.desktop)
| |
| </pre>
| |
| | |
| == A full-featured example ==
| |
| | |
| Ok, and now for a full-featured but non-working example.
| |
| | |
| Give the project a name, find KDE 4 and setup CMAKE_MODULE_PATH. This has the effect that cmake will also use check the ${CMAKE_SOURCE_DIR}/cmake directory for files if you use include(somefile) or find_package(something). Please note that this directory is added to the former contents of CMAKE_MODULE_PATH. This is important, since if find_package(KDE4) was successfully, it will have setup CMAKE_MODULE_PATH so that it points to the directory where the cmake files installed with kdelibs are located.
| |
| <pre>
| |
| project(kfoo)
| |
| | |
| find_package(KDE4 REQUIRED)
| |
| | |
| set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
| |
| </pre>
| |
| | |
| Then apply the required settings:
| |
| <pre>
| |
| include_directories( ${KDE4_INCLUDE_DIRS})
| |
| add_definitions( ${KDE4_DEFINITIONS} )
| |
| </pre>
| |
| | |
| Create a variable which holds your source files:
| |
| <pre>
| |
| set(kfooSources main.cpp myappl.cpp view.cpp)
| |
| </pre>
| |
| | |
| If you have Qt designer ui files version 3 or 4 add them to the variable we just created:
| |
| <pre>
| |
| kde4_add_ui_files( kfooSources maindialog.ui logindialog.ui)
| |
| | |
| kde4_add_ui3_files( kfooSources printerdlg.ui previewdlg.ui)
| |
| </pre>
| |
| | |
| If you have files for the kconfig_compiler add them this way:
| |
| <pre>
| |
| kde4_add_kcfg_files( kfooSources settings.kcfg )
| |
| </pre>
| |
| | |
| | |
| You have some DCOP stuff too ?
| |
| I guess you already almost guessed it:
| |
| <pre>
| |
| kde4_add_dcop_skels(kfooSources someinterface.h anotherinterface.h)
| |
| | |
| kde4_add_dcop_stubs(kfooSources blah.h blub.h)
| |
| </pre>
| |
| | |
| So, if you have listed everything, you probably want automoc:
| |
| <pre>
| |
| kde4_automoc( ${kfooSources} )
| |
| </pre>
| |
| | |
| Please note that kde4_automoc() doesn't take the name of a variable as argument, but just a list of files. That's why kfooSource is "dereferenced" here.
| |
| | |
| Finally, tell cmake what you want to build:
| |
| <pre>
| |
| kde4_add_executable(kfoo ${kfooSources} )
| |
| </pre>
| |
| | |
| This is a slightly extended version of the original cmake add_executable().
| |
| Additionally it does some more RPATH handling and supports KDE4_ENABLE_FINAL.
| |
| Just as add_executable() the first argument is the name of the executable followed by the list of source files.
| |