MakeFile-Creator
MakeFile-Creator is an utility for managing makefiles in C/C++ projects.
Getting started
These instructions will get you a copy of the project up and running on your local machine.
Prerequisites
Python >= 3.6
Installing
Install the package from Python Package Index:
pip3 install makefile-creator
Configuration
cd /your/project/path
You have to create a configuration file. For the first time it's good to let MakeFile-Creator to automatically generate configuration for you.
python3 -m makefile_creator -config
A new mfc.config.json
file will be created in current working directory.
File content should be something like this:
{
"TARGET": "my_project",
"CC": "gcc",
"LD": "gcc"
"C_FLAGS": [
"-c",
"-Wall"
],
"LD_FLAGS": [],
"EXTENSIONS": [
"c",
"cc",
"cpp"
],
"IGNORE_PATHS": [],
"CUSTOM_TARGETS": {},
"VERBOSE": false,
"RM": "rm -v",
"BUILD_DIRECTORY": "./build",
"BIN_DIRECTORY": "./build/bin"
}
Meaning:
target
: Project name.cc
: Compiler command ("gcc"
, by default).ld
: Linker command ("gcc"
, by default).c_flags
: List of compiler flags.ld_flags
: List of linker flags.libs
: Libs to be used to compile the project.include_paths
Paths to search for headers.extensions
: Source files extensions list.ignore_paths
: List of paths to be ignored, for example you can put here all directories you do not want MakeFile-Creator to scan.custom_targets
: Custom targets formake
, in the following format:
"custom_targets": {
"target_name": "command",
"other_target": "other_command",
...
}"
verbose
:true
if you want to print entire source tree while scanning.rm
: Command to use formake clean
(rm -v
, by default).build_directory
: Path where you want to build the project.bin_directory
: Binary output file (e.g. where you want to put final executable).
For more details:
python3 -m makefile_creator -h
Run the script:
python3 -m makefile_creator
Now MakeFile-Creator will generate makefiles. Feel free to change this setting in
mfc.config.json
according to your requirements.
Authors
- Romulus-Emanuel Ruja <romulus-emanuel.ruja@tutanota.com>
License
This project is licensed under the MIT License - see the LICENSE file for details.
Changelog
-
New in version v0.0.9-beta (November 2020):
- Added libs support (
libs
). - Added include paths support (
include_paths
). - All makefiles and deps files are now put into
build
directory. - Code refactoring.
- Added libs support (
-
New in version v0.0.8-beta (November 2020):
- Added command line arguments. Now you can generate configuration file from command line and also update, or override settings.
- Build files are now put in a separate directory (
build_directory
). - Added separate command for Linker (
ld
). - Other code refactoring and bugs fixed.