1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
/****************************************************************************
**
** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator
**
**
** GNU Free Documentation License
**
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of this
** file.
**
**
****************************************************************************/
// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************
/*!
\contentspage {Qt Creator Manual}
\previouspage creator-project-other.html
\page creator-project-cmake.html
\nextpage creator-project-qbs.html
\title Setting Up a CMake Project
CMake is an alternative to qmake for automating the generation of build
configurations. It controls the software compilation process by using simple
configuration files, called \c{CMakeLists.txt} files. CMake generates native
build configurations and workspaces that you can use in the compiler
environment of your choice.
Since \QC 1.1, CMake configuration files are supported. Since \QC 1.3, the
Microsoft tool chain is supported if the CMake version is at least 2.8.
\section1 Setting the Path for CMake
You can set the path for the \c CMake executable in \uicontrol{Tools} >
\uicontrol{Options > Build & Run > CMake}.
\image qtcreator-cmakeexecutable.png
\note Before you open a \c CMake project, you must modify the \c{PATH}
environment variable to include the bin folders of \c mingw and Qt.
For instance, if the Qt 4 SDK is installed in \c {C:\SDK}, you would use the
following command to set the environment variables in the command line
prompt:
\code
set PATH=C:\sdk\mingw\bin;C:\sdk\qt\bin;
\endcode
Then start \QC by typing:
\code
C:\sdk\bin\qtcreator.exe
\endcode
\section1 Opening CMake Projects
To open a \c CMake project:
\list 1
\li Select \uicontrol{File} > \uicontrol{Open File or Project}.
\li Select the \c{CMakeLists.txt} file from your \c CMake project.
\endlist
A wizard guides you through the rest of the process.
\note If the \c CMake project does not have an in-place build, \QC
lets you specify the directory in which the project is built
(\l{glossary-shadow-build}{shadow build}).
\image qtcreator-cmake-import-wizard1.png
The screenshot below shows how you can specify command line arguments to
\c CMake for your project.
\image qtcreator-cmake-import-wizard2.png
Normally, there is no need to pass any command line arguments for projects
that are already built, as \c CMake caches that information.
\section1 Building CMake Projects
\QC builds \c CMake projects by running \c make, \c mingw32-make, or
\c nmake depending on your platform. The build errors and warnings are
parsed and displayed in the \uicontrol{Issues} output pane.
By default, \QC builds the \b{all} target. You can specify which
targets to build in \uicontrol{Project} mode, under \uicontrol{Build Settings}.
\image qtcreator-cmake-build-settings.png
\QC supports multiple build configurations. You can change the build
directory after the initial import.
\section1 Running CMake Projects
\QC automatically adds \uicontrol{Run Configurations} for all targets specified
in the \c CMake project file.
For more information about known issues for the current version, see
\l{Known Issues}.
\section1 Deploying CMake Projects to Embedded Linux Devices
\QC cannot extract files to be installed from a CMake project, and
therefore, only executable targets are automatically added to deployment
files. You must specify all other files in the \c QtCreatorDeployment.txt
file that you create and place in either the root directory of the CMake
project or the build directory of the active build configuration.
Currently, Qt Creator first checks the root directory and only if no
\c QtCreatorDeployment.txt exists it checks the active build directory.
Use the following syntax in the file:
\code
<deployment/prefix>
<relative/source/file1>:<relative/destination/dir1>
...
<relative/source/filen>:<relative/destination/dirn>
\endcode
Where:
\list
\li \c{<deployment/prefix>} is the (absolute) path prefix to where files
are copied on the remote machine.
\li \c{<relative/source/file>} is the file path relative to the CMake
project root. No directories or wildcards are allowed in this
value.
\li \c{<relative/destination/dir>} is the destination directory path
relative to \c{deployment/prefix}.
\endlist
To automate the creation of \c QtCreatorDeployment.txt file:
\list 1
\li Define the following macros in the top level \c CMakeLists.txt file:
\code
file(WRITE "${CMAKE_SOURCE_DIR}/QtCreatorDeployment.txt" "<deployment/prefix>\n")
macro(add_deployment_file SRC DEST)
file(RELATIVE_PATH path ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
file(APPEND "${CMAKE_SOURCE_DIR}/QtCreatorDeployment.txt" "${path}/${SRC}:${DEST}\n")
endmacro()
macro(add_deployment_directory SRC DEST)
file(GLOB_RECURSE files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${SRC}/*")
foreach(filename ${files})
get_filename_component(path ${filename} PATH)
add_deployment_file("${filename}" "${DEST}/${path}")
endforeach(filename)
endmacro()
\endcode
\li Use \c {add_deployment_file(<file/name>)} to add files and
\c {add_deployment_directory(<folder/name>)} to add directories
(including subdirectories) to the \c QtCreatorDeployment.txt file.
\li Re-run \c cmake after you add or remove files using the macros.
\endlist
\section1 Adding External Libraries to CMake Projects
Through external libraries, \QC can support code completion and syntax
highlighting as if they were part of the current project or the Qt library.
\QC detects the external libraries using the \c FIND_PACKAGE()
macro. Some libraries come with the CMake installation. You can find those
in the \c {Modules} directory of your CMake installation.
\note If you provide your own libraries, you also need to provide your own
\c FindFoo.cmake file. For more information, see
\l{http://vtk.org/Wiki/CMake_FAQ#Writing_FindXXX.cmake_files}{CMake FAQ}.
Syntax completion and highlighting work once your project successfully
builds and links against the external library.
*/
|