PRO File Documentation
Summary
A .pro file is not one format. The .pro extension is shared by many unrelated programs, so the first step is always to open it in a text editor and read the first lines. The most common technical case is a Qt qmake project file (plain text with lines like QT +=, SOURCES +=, TEMPLATE = app), edited in Qt Creator. Other programs, from PTC Creo to KiCad and Prolog, reuse the same extension.
Technical details
| Feature | Value |
|---|---|
| Common full name | Qt qmake Project File (dominant technical use) |
| File extension | .pro |
| MIME type | text/plain |
| Format type | Generic extension — usually plain-text configuration or script |
| Nature | Ambiguous / overloaded: no single owning application |
| Qt developer | The Qt Company (qmake build system) |
| Qt introduced | qmake, early 2000s |
| Also used by | PTC Pro/ENGINEER (Creo), KiCad (pre-v6), Prolog source, TurboFloorPlan, IBM Cognos TM1 |
| Byte order | N/A — text, no binary header |
| Magic number | None — identify by contents, not a signature |
| Encoding | UTF-8 / ASCII (text cases) |
| Open standard | Varies by program; qmake syntax is documented |
| Qt specification | doc.qt.io/qt-6/qmake-project-files.html |
| Related extensions | .pri, .pro.user, .qbs, .cmake, .kicad_pro |
| Safe to inspect | Yes — text files carry no executable code |
What is a .pro file?
A .pro file has no single meaning. The extension is shared by many unrelated programs, most of which store plain text, so “PRO” names a suffix rather than a defined format. The database label “Profile file” reflects exactly that: there is no one structure to describe. The practical consequence is that the first move with any .pro file is to open it in a text editor and read the opening lines, which usually reveal which application created it.
The most common and clearly identifiable technical .pro file is a Qt qmake project file. Qt is a cross-platform C++ application framework, and qmake is its older build system. A qmake .pro is a script that tells the build tool how to compile a program. The rest of this page covers that case in detail, then lists the other programs that reuse the extension so you can tell them apart.
The qmake project file: variables and operators
A qmake .pro is a sequence of assignments to build variables. Each line names a variable and modifies it with an operator: = sets a value, += appends, -= removes, *= adds only if not already present, and ~= replaces by regular expression. Values are whitespace-separated tokens, and a trailing backslash continues a line. Comments start with #. A minimal project looks like this:
TEMPLATE = app # build an application (vs lib, subdirs, aux)
TARGET = myapp # output binary name
QT += core gui widgets # Qt modules to link
CONFIG += c++17 # build options / feature flags
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui # Qt Designer .ui files
RESOURCES += assets.qrc # compiled-in resources
The core variables have fixed meanings. TEMPLATE selects what qmake generates: app for an executable, lib for a shared or static library, subdirs for a project that recurses into sub-projects, or aux for a project that builds nothing itself. TARGET sets the output name. QT lists the framework modules the code needs (core, gui, widgets, network, and so on), each of which adds the right include paths and libraries. CONFIG carries feature flags and build options such as c++17, debug, release or staticlib.
The file-list variables enumerate the project inputs: SOURCES and HEADERS for C++ code, FORMS for Qt Designer .ui layouts, and RESOURCES for .qrc resource collections. When qmake runs, FORMS entries are passed to the uic user-interface compiler and RESOURCES to the rcc resource compiler, whose generated code is added to the build automatically.
Scopes: platform-specific and conditional blocks
qmake supports conditional configuration through scopes. A scope is a condition followed by a brace-delimited block that applies only when the condition holds. This is how one .pro file describes a build that differs across platforms:
win32 {
SOURCES += platform_win.cpp
LIBS += -luser32
}
unix:!macx { # Linux but not macOS
SOURCES += platform_x11.cpp
}
CONFIG(debug, debug|release) {
DEFINES += APP_DEBUG
}
Built-in scope names include win32, unix, macx and android; they can be combined with : (logical AND) and negated with !. The special CONFIG() test inspects the active build configuration. Larger projects split shared settings into .pri include files pulled in with include(common.pri), keeping each .pro focused.
Running qmake on the project reads these variables and scopes and writes a platform-native Makefile (or a Visual Studio / Xcode project). The Makefile is what actually compiles the code, so the .pro is a level above the build: a portable description that qmake translates per platform. Newer Qt projects increasingly use CMake instead, but a large body of existing software still ships a .pro, and Qt provides a qmake2cmake helper to assist porting.
Other programs that use the .pro extension
Because the suffix is unclaimed, several unrelated applications adopted it. Each opens only in its own software, and none shares a structure with the others.
| Program | What the .pro holds | How to open |
|---|---|---|
| Qt qmake | Build project script (text) | Qt Creator; run qmake |
| PTC Pro/ENGINEER (Creo) | CAD configuration / part-related data | PTC Creo |
| KiCad (pre-v6) | EDA project file (INI-style text) | KiCad; v6+ migrates it to .kicad_pro JSON |
| Prolog | Prolog source code (clauses) | A Prolog interpreter such as SWI-Prolog |
| TurboFloorPlan | Home/landscape design project | TurboFloorPlan |
| IBM Cognos TM1 | TurboIntegrator process script | TM1 / Planning Analytics |
Two of these are worth a note. KiCad changed its project format at version 6: the old text .pro became a JSON file with the .kicad_pro extension, and opening an old .pro in KiCad 6 or later migrates it in place (keep a backup first). Prolog source is also written as .pl, so a .pro full of readable logic clauses is program code, loaded and queried inside an interpreter rather than opened as a document.
Reading the file to find its owner
Since the extension does not identify the program, the contents do. Open the file in Notepad, TextEdit, VS Code or any editor and look at the first lines. Assignment lines such as QT +=, SOURCES += or TEMPLATE = app mean a Qt project. INI-style [section] headers point to an older KiCad project. Readable clauses ending in a full stop indicate Prolog. If the file opens as unreadable binary rather than text, it belongs to a proprietary application (most often PTC Creo) and only that program will make sense of it. Where the file came from is another strong clue: a project handed over by a Qt developer, a drawing from a Creo user, and so on.
There is deliberately no universal “PRO viewer” on this page, because no single tool opens all of them. A plain text editor is the closest thing to a universal opener, since most .pro files are text, and it is also the safest first step: reading a text file cannot execute anything.
Frequently asked questions
Why isn't there one answer for what a .pro file is?
Because the extension was never reserved for a single format. Independent programs each chose .pro for their own project or configuration files, so the same three letters cover Qt build scripts, CAD data, EDA projects, Prolog code and more. Only the file’s contents, or the program it came from, settle which one you have.
How do I open a Qt .pro file?
Install Qt Creator (the free open-source edition) and use File › Open File or Project, then select the .pro. Qt Creator loads the project and can build it. From a terminal, running qmake on the file generates a Makefile you can then build with make.
My old KiCad .pro won't open in new KiCad — why?
KiCad switched its project format to JSON (.kicad_pro) at version 6. Opening the legacy .pro in KiCad 6 or later migrates the project automatically. Keep a copy of the original before upgrading in case you need to open it in the old version again.
References
- Qt Documentation — qmake project (.pro) files
- Qt — development tools (Qt Creator)
- KiCad — EDA project files
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.