Skip to main content

qmake2cmake

This repository contains Python scripts to convert QMake projects to CMake projects.

Goals

The qmake2cmake tool creates a CMakeLists.txt that covers the most common attributes of the converted .pro file. The generated CMake project can be used as baseline and will most likely need manual adjustments.

QMake constructs that cannot be converted end up in the CMake project as comment.

Non-goals

Qt versions lower than 6.0 are not supported.

The following QMake constructs are not converted:

  • TEMPLATE = aux projects
  • custom .prf files
  • extra compilers
  • extra targets
  • installation rules

Requirements

Installation

You can install the qmake2cmake package directly via pip install qmake2cmake.

In case you are developing a new feature or want to install the latest repository version, do an editable build by running pip install -e .

Installation for contributors

For developers who want to contribute to qmake2cmake, we recommend using a virtual environment to avoid conflicts with other packages that are already installed.

  • Create an environment: python3 -m venv env --prompt qmake2cmake,
  • Activate the environment: source env/bin/activate (on Windows: env\Scripts\activate.bat)
  • Install the requirements: pip install -r requirements.txt

If the pip install command above doesn't work, try:

python3.7 -m pip install -r requirements.txt

Usage

After installing the qmake2cmake package, two scripts will be available in your bin/ directory of your Python environment: qmake2cmake and qmake2cmake_all.

The following call converts a single QMake project file to CMake:

qmake2cmake ~/projects/myapp/myapp.pro --min-qt-version 6.3

It's necessary to specify a minimum Qt version the project is supposed to be built with. Use the --min-qt-version option or the environment variable QMAKE2CMAKE_MIN_QT_VERSION.

By default, a CMakeLists.txt is placed next to the .pro file.

To generate CMakeLists.txt in a different location, use the -o option:

qmake2cmake ~/projects/myapp/myapp.pro --min-qt-version 6.3 -o ~/projects/myapp-converted/CMakeLists.txt

To convert a whole project tree, pass the project directory to qmake2cmake_all:

qmake2cmake_all ~/projects/myapp --min-qt-version 6.3

Contributing

The main source code repository is hosted at codereview.qt-project.org.

See the Qt Contribution Guidelines page, Setting up Gerrit and Gerrit Introduction for more details about how to upload patches for review.

Code style and tests

You can run the linter (mypy), code-style checkers (flake8, black) and tests (pytest) by executing:

make test

There are also separate make targets for each of those make mypy, make flake8, make black_format_check, make pytest.

You can auto-format the code using black:

make format

Releasing a new version

Increase the version number in setup.cfg according to semantic versioning 2.0.

For building and uploading qmake2cmake you will need the Python modules build and twine.

Build the wheel:

$ python -m build

Upload to testpypi:

$ twine upload --repository testpypi dist/<wheel-name>

Install the uploaded wheel in a fresh venv:

$ python -m venv fresh && . ./fresh/bin/activate
(fresh)$ pip install -i https://testpypi.python.org/pypi qmake2cmake --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple

If the installation succeeded, try to convert something. If everything is bueno, upload the wheel to production pypi.

$ twine upload --repository pypi dist/<wheel-name>

It is advisable to try out this wheel in another fresh venv.

Metadata

Release files for qmake2cmake 1.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qmake2cmake 1.0.8
File Size Uploaded
qmake2cmake-1.0.8.tar.gz 75.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qmake2cmake 1.0.8
File Interpreter ABI Platform
qmake2cmake-1.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 144.3 kB

Release files / qmake2cmake-1.0.8.tar.gz

Download URL qmake2cmake-1.0.8.tar.gz
Size 75.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2136dd2327b7b24ce02300a727b49b3b4fa022110d9d87a2f05bcd1bcc2f282d
BLAKE2b-256 checksum
How to use checksums
820ce85b4356297d64f0f0d924db35fef0a7051bd42fade096138a97ab1825ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / qmake2cmake-1.0.8-py3-none-any.whl

Download URL qmake2cmake-1.0.8-py3-none-any.whl
Size 69.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d8d163c83075cef8ad2899b4dd94fb163fdc7f747a15d78cb719a1410751cf3
BLAKE2b-256 checksum
How to use checksums
0873e32796a6defad24f804de348d1a37aeaaa6b9898a03d767edcee5643091a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.8 This release

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page