quom 4.0.1

Creator: railscoder56

Last updated:

Add to Cart

Description:

quom 4.0.1

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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.