\chapter The 10 minute guide to using qmake \section1 Creating a project file \e qmake uses information stored in project (.pro) files to determine what should go in the makefiles it generates. A basic project file contains information about the application, for example, which files are needed to compile the application, and which configuration settings to use. Here's a simple example project file: \code SOURCES = hello.cpp HEADERS = hello.h CONFIG += qt warn_on release \endcode We'll provide a brief line-by-line explanation, deferring the detail until later on in the manual. \code SOURCES = hello.cpp \endcode This line specifies the source files that implement the application. In this case there is just one file, \e hello.cpp. Most applications require multiple files; this situation is dealt with by listing all the files on the same line space separated, like this: \code SOURCES = hello.cpp main.cpp \endcode Alternatively, each file can be listed on a separate line, by escaping the newlines, like this: \code SOURCES = hello.cpp \ main.cpp \endcode A more verbose approach is to list each file separately, like this: \code SOURCES += hello.cpp SOURCES += main.cpp \endcode This approach uses "+=" rather than "=" which is safer, because it always adds a new file to the existing list rather than replacing the list. The HEADERS line is used to specify the header files created for use by the application, e.g. \code HEADERS += hello.h \endcode Any of the approaches used to list source files may be used for header files. The CONFIG line is used to give \e qmake information about the application's configuration. \code CONFIG += qt warn_on release \endcode The "+=" is used here, because we add our configuration options to any that are already present. This is safer than using "=" which replaces all options with just those specified. The \e qt part of the CONFIG line tells \e qmake that the application is built using Qt. This means that \e qmake will link against the Qt libraries when linking and add in the neccesary include paths for compiling. The \e warn_on part of the CONFIG line tells \e qmake that it should set the compiler flags so that warnings are output. The \e release part of the CONFIG line tells \e qmake that the application must be built as a release application. During development, programmers may prefer to replace \e release with \e debug, which is discussed later. \omit The last line in the project file is the TARGET line: \code TARGET = hello \endcode The target line simply specifies what the name of the target should be for the application. You shouldn't put an extension here because \e qmake will do this for you. \endomit Project files are plain text (i.e. use an editor like notepad, vim or xemacs) and must be saved with a '.pro' extension. The name of the application's executable will be the same as the project file's name, but with an extension appropriate to the platform. For example, a project file called 'hello.pro' will produce 'hello.exe' on Windows and 'hello' on Unix. \section1 Generating a makefile When you have created your project file it is very easy to generate a makefile, all you need to do is go to where you have created your project file and type: Makefiles are generated from the '.pro' files like this: \code qmake -o Makefile hello.pro \endcode For Visual Studio users, \e qmake can also generate '.dsp' files, for example: \code qmake -t vcapp -o hello.dsp hello.pro \endcode