Multimodule project¶
You can separate your project to several modules. For dogebuild multimodule project see dogebuild documentation.
Multimodule project structure¶
Multimodule dogebuild-c project usually consist of some libraries modules and one or many executables:
project/
library_1/
src/
... library_1 sources ...
dogefile.py
library_2/
src/
... library_2 sources ...
dogefile.py
main_executable/
src/
... main executable sources ...
dogefile.py
Dogefile for libraries is a standard static library dogefile:
from pathlib import Path
from dogebuild_c.c_plugin import CPlugin, BinaryType
CPlugin(
binary_type=BinaryType.STATIC_LIBRARY,
out_name="library_1",
src=Path("src").glob('**/*.c'),
headers=Path("src").glob('**/*.h'),
)
Dogefile for main executable dependent on library should contain list of its dependencies:
from pathlib import Path
from dogebuild import dependencies, directory, doge
from dogebuild_c.c_plugin import CPlugin, BinaryType
dependencies(
doge(directory("../library_1")),
doge(directory("../library_2")),
)
CPlugin(
binary_type=BinaryType.EXECUTABLE,
out_name="main",
src=Path("src").glob('**/*.c'),
headers=Path("src").glob('**/*.h'),
)
Dogefile for project is simple multimodule dogefile:
from dogebuild import modules
modules(
'library_1',
'library_2',
'main',
)
Example of multimodule project available in demo repository.