Quom is a single header generator for C/C++ libraries.
Project description
Quom
Quom is a single file generator for C/C++.
It resolves all included local headers starting with your main C/C++ file. This is also known as amalgamation.
Afterwards, it tries to find the related source files and their headers and places them at the end of the main file or at a specific stitch location if provided.
At the end there will be one single file with all your header and sources joined together.
Installation
pip install --user quom
Requires Python 3.7 or later.
How to use it
usage: quom [-h] [--stitch format] [--include_guard format] [--trim]
input output
Single header generator for C/C++ libraries.
positional arguments:
input Input file path of the main file.
output Output file path of the generated single header file.
optional arguments:
-h, --help show this help message and exit
--stitch format, -s format
Format of the comment where the source files should be placed
(e.g. // ~> stitch <~). Default: None (at the end of the main file)
--include_guard format, -g format
Regex format of the include guard. Default: None
--trim, -t Reduce continuous line breaks to one. Default: True
--include_directory INCLUDE_DIRECTORY, -I INCLUDE_DIRECTORY
Add include directories for header files.
--source_directory SOURCE_DIRECTORY, -S SOURCE_DIRECTORY
Set the source directories for source files.
Use ./ in front of a path to mark as relative to the header file.
--encoding ENCODING, -e ENCODING
The encoding used to read and write all files.
Simple example
The project:
|-src/
| |-foo.hpp
| |-foo.cpp
| -main.cpp
|-out/
-main_gen.cpp
foo.hpp
#pragma once
int foo();
foo.cpp
#include "foo.hpp"
int foo() {
return 0;
}
main.cpp
#include "foo.hpp"
int main() {
return foo();
}
The command:
quom src/main.hpp main_gen.cpp
main_gen.cpp
int foo();
int main() {
return foo();
}
int foo() {
return 0;
}
Advanced example
The project:
|-src/
| |-foo.hpp
| |-foo.cpp
| -foobar.hpp
|-out/
-foobar_gen.hpp
foo.hpp
#pragma once
#ifndef FOOBAR_FOO_HPP
#define FOOBAR_FOO_HPP
extern int foo;
#endif
foo.cpp
#include "foo.hpp"
int foo = 42;
foobar.hpp
#pragma once
#ifndef FOOBAR_HPP
#define FOOBAR_HPP
#include "foo.hpp"
#endif
#ifdef FOO_MAIN
// ~> stitch <~
#endif
The command:
quom src/foobar.hpp foobar_gen.hpp -s "~> stitch <~" -g FOOBAR_.+_HPP
foobar_gen.hpp
#pragma once
#ifndef FOOBAR_HPP
#define FOOBAR_HPP
extern int foo;
#endif
#ifdef FOO_MAIN
int foo = 42;
#endif
Take a look into the examples folder for more.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file quom-4.0.1.tar.gz
.
File metadata
- Download URL: quom-4.0.1.tar.gz
- Upload date:
- Size: 502.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 297dca8f44baeb7592dcc3efc6f0caf9a2b0d15e17f825d2910d51db6832b3d7 |
|
MD5 | 3a487a0cb9edfafc7baaf4963bf0c0d6 |
|
BLAKE2b-256 | 0a2691cef505132e7800e4232facc0858d079b7f84a07d608dbc6e790fc90015 |
File details
Details for the file quom-4.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: quom-4.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7834fdeb657b3bc89e4e92614feaacfc29b1c161aa3b31202758e10f00d28984 |
|
MD5 | 80e7a61be8938359c1154db1abd0acdf |
|
BLAKE2b-256 | a0e7bf996d8feaee2157c019c0b5e09583393adb7b3a464652ca69c41589c4bb |