This patch adds a new bootstrap tool which will read CMake's AutoGenInfo.json and ParseCache.txt to determine what the current list of json files is that needs to be passed to moc --collect-json option. Right now this is enabled for qt_add_module() with the option GENERATE_METATYPES. pro2cmake has also been updated to detect qmake's CONFIG += metatypes and to generate the above option for modules. The implementation lives in Qt6CoreMacros so it can eventually be used in the public facing apis. The generated meta types file is saved under the target property QT_MODULE_META_TYPES_FILE. Change-Id: I03709c662be81dd0912d0068c23ee2507bfe4383 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> |
||
|---|---|---|
| .. | ||
| tests | ||
| Makefile | ||
| Pipfile | ||
| README.md | ||
| cmakeconversionrate.py | ||
| condition_simplifier.py | ||
| condition_simplifier_cache.py | ||
| configurejson2cmake.py | ||
| generate_module_map.sh | ||
| helper.py | ||
| json_parser.py | ||
| pro2cmake.py | ||
| pro_conversion_rate.py | ||
| qmake_parser.py | ||
| requirements.txt | ||
| run_pro2cmake.py | ||
| special_case_helper.py | ||
README.md
CMake Utils
This directory holds scripts to help the porting process from qmake to cmake for Qt6.
Requirements
- Python 3.7,
pipenvorpipto manage the modules.
Python modules
Since Python has many ways of handling projects, you have a couple of options to install the dependencies of the scripts:
Using pipenv
The dependencies are specified on the Pipfile, so you just need to run
pipenv install and that will automatically create a virtual environment
that you can activate with a pipenv shell.
Using pip
It's highly recommended to use a virtualenvironment
to avoid conflict with other packages that are already installed: pip install virtualenv.
- Create an environment:
virtualenv env, - Activate the environment:
source env/bin/activate(on Windows:source env\Scripts\activate.bat) - Install the requirements:
pip install -r requirements.txt
Contributing to the scripts
You can verify if the styling of a script complaint with PEP8, with a couple of exceptions:
Install flake8 (pip install flake8) and run it
on the script you want to test:
flake8 <file>.py --ignore=E501,E266,W503
E501: Line too long (82>79 characters),E266: Too many leading '#' for block comment,W503: Line break occurred before a binary operator)
You can also modify the file with an automatic formatter,
like black (pip install black),
and execute it:
black -l 100 <file>.py
Using Qt's maximum line length, 100.