quo

Quom

Quom generates a single file from your for C/C++ sources. This is also known as amalgamation.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

73

Maintenance

Last Commit

2mos ago

Contributors

1

Package

Dependencies

0

License

MIT

Categories

Readme

logo

Build Status PyPI

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 there 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

Only Python 3.6+ is supported.

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
#endif FOOBAR_FOO_HPP

extern int foo; 

#endif

foo.cpp

#include "foo.hpp"

int foo = 42;

foobar.hpp

#pragma once

#ifndef FOOBAR_HPP
#endif 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
#endif FOOBAR_HPP

extern int foo;

#endif

#ifdef FOO_MAIN

int foo = 42;

#endif

Take a look into the examples folder for more.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial