mk-project

Introduction

I need a Makefile every time i write a program, library or a script.

So I decide to write a program which generate a big Makefile according to the wanted settings.

Which automate all the task i used to use or that i need sometimes during the development process without forgetting the distributing process.

I have study in depth the "GNU make manual" and become acquainted with the make tool.

So that I have implemented many targets in a big "Makefile" starting

by simply automating the compilation process and the executable launching tasks...

So I have construct a big Makefile for all sort of purposes.

Adding to this an user-friendly, terminals embedded gtk+3.0 G.U.I

You obtain mk-project !

The T.D.E (Terminal Development Environment) based on the make tool.

Download the latest version of mk-project: mk-project 2.1

Note: I correct the terminals bug which occurs by newer vte-2.91 and gtk+-3.0 versions.


Screenshots

Description:

mk-project

The mk-project program icon

Presentation

mk-project generate you a Makefile based project fully according to your settings...
  • mk-project provides you targets to compile, launch, debugging, profiling,... your programs.

  • mk-project provide you targets to format your source code with several tools:

    • indent
    • astyle
    • bcpp

  • mk-project provides you for the documentation generator sphinx but you can add your own targets because mk-project is extensible.

  • With many output possiblities:

    • html
    • dirhtml
    • pdf
    • man
    • xml
    • latex
    • epub
    • info
    • plain text
    • And much more (Take a look at your repositories to see how many sphinx extensible is...)

  • Notes: You can write sphinx documentation using ReST (ReStructured Text) or Markdown to know that ReST is standardize and Markdown not.

  • mk-project provide you targets to create an archive from your project using:

    • The *.tar format.
    • The *.tar.gz format.
    • The *.tar.bz2 format.
    • The *.tar.lzma format.
    • The *.tar.lzp format.
    • The *.tar.lzo format.
    • The *.rar format.

  • And mk-project provide many others features !!!

New in version 2.1 Now you can export a profile file from your project to reload it the next time you will build a project.

This will economize you some options searching and setting, work time.



A mk-project project


Building a mk-project project


Working on an existing mk-project project



debug targets

mk-project code investigating, debugging and disassembling

make strace      # trace the binary.
make ltrace      # ltrace the binary.
make nm          # process the binary with the nm tool.
make objdump     # Process the binary with the objdump tool.
make ldd         # Process the binary with the ldd tool.


Code formatting targets

mk-project code formatters

indent

make indent-kr    # Format all source files in the kr style.
make indent-gnu   # Format all source files in the gnu style.
make indent-linux # Format all source files in the linux style.
make indent-orig  # Format all source files in the original style.
make indent-user  # Format all source files in the user defined style.

make indent-clean # Remove all formatted files with suffix.

astyle

make astyle-ansi          # Format all source files in the ansi style.
make astyle-java          # Format all source files in the java style.
make astyle-kr            # Format all source files in the kr style.
make astyle-stroustrup    # Format all source files in the stroustrup style.
make astyle-whitesmith    # Format all source files in the whitesmith style.
make astyle-banner        # Format all source files in the banner style.
make astyle-gnu           # Format all source files in the gnu style.
make astyle-linux         # Format all source files in the linux style.
make astyle-horstmann     # Format all source files in the horstmann style.
make astyle-lisp          # Format all source files in the lisp style.
make astyle-pico          # Format all source files in the pico style.
make astyle-python        # Format all source files in the python style.
make astyle-user          # Format all source files in the user defined style.

make astyle-clean         # Remove all formatted files with suffix.

bcpp

make bcpp-kr      # Format all source files in the bcpp-kr style.
make bcpp-pascal  # Format all source files in the bcpp-pascal style.

make bcpp-clean   # Remove all formatted files with suffix.


Documentation targets

Following sphinx based targets output on my system.

This is the output on my system:

make sphinx-html # to make standalone HTML files
make sphinx-dirhtml # to make HTML files named index.html in directories
make sphinx-singlehtml # to make a single large HTML file
make sphinx-pickle # to make pickle files
make sphinx-json # to make JSON files
make sphinx-htmlhelp # to make HTML files and an HTML help project
make sphinx-qthelp # to make HTML files and a qthelp project
make sphinx-applehelp # to make an Apple Help Book
make sphinx-devhelp # to make HTML files and a Devhelp project
make sphinx-epub # to make an epub
make sphinx-epub3 # to make an epub3
make sphinx-latex # to make LaTeX files, you can set PAPER=a4 or PAPER=letter
make sphinx-latexpdf # to make LaTeX files and run them through pdflatex
make sphinx-latexpdfja # to make LaTeX files and run them through platex/dvipdfmx
make sphinx-lualatexpdf # to make LaTeX files and run them through lualatex
make sphinx-xelatexpdf # to make LaTeX files and run them through xelatex
make sphinx-text # to make text files
make sphinx-man # to make manual pages
make sphinx-texinfo # to make Texinfo files
make sphinx-info # to make Texinfo files and run them through makeinfo
make sphinx-gettext # to make PO message catalogs
make sphinx-changes # to make an overview of all changed/added/deprecated items
make sphinx-xml # to make Docutils-native XML files
make sphinx-pseudoxml # to make pseudoxml-XML files for display purposes
make sphinx-linkcheck # to check all external links for integrity
make sphinx-doctest # to run all doctests embedded in the documentation (if enabled)
make sphinx-coverage # to run coverage check of the documentation (if enabled)
make sphinx-dummy # to check syntax errors of document sources

Following sphinx "show doc" based targets are always available.

make sphinx-show-texi
make sphinx-show-man
make sphinx-show-info
make sphinx-show-pdf
make sphinx-show-latexpdf
make sphinx-show-latexpdfja
make sphinx-show-html
make sphinx-show-dirhtml
make sphinx-show-texinfo
make sphinx-show-xml
make sphinx-show-pseudoxml
make sphinx-show-plain
make sphinx-show-pickle
make sphinx-show-json
make sphinx-show-helphtml
make sphinx-show-qthelp
make sphinx-show-devhelp
make sphinx-show-epub


package targets

make pkg-tar      # Generate a tar archive from the project.
make pkg-tar-lzma # Generate a tar.lzma archive from the project.
make pkg-tar-lzip # Generate a tar.lz archive from the project.
make pkg-tar-lzop # Generate a tar.lzo archive from the project.
make pkg-tar-xz   # Generate a tar.xz archive from the project.
make pkg-tar-gz   # Generate a tar.gz archive from the project.
make pkg-tar-bz2  # Generate a tar.bz2 archive from the project.
make pkg-rar      # Generate a rar archive from the project.
make pkg-zip      # Generate a zip archive from the project.


bin targets

make ddebug     # Build the binary with DEBUG flag defined.
make gdebug     # Build the binary with the debugging -g option.
make gdb        # Launch gdb with the binary given as argument.
make fdebug     # Build the binary and generate a debug.txt file from the build.
make pg         # Build the binary with the profiling -pg option.
make gprof      # Launch the gprof tool.

make assembly-att    # Generate assembly files (AT&T syntax) from src files.
make assembly-intel  # Generate assembly files (Intel syntax) from src files.
make assembly-power  # Generate assembly files (Power syntax) from src files.


make preproc    # Generate preprocessor file (*.i) from source files.

make hexdump    # Process a hexdump on the program.

make info       # Print binary file informations.

make strip      # strip the binary.

make search-pattern argv=pattern # Search for pattern in files.

You must use Oprofile (>= 1.0) for profiling

make operf      # This is the program for collecting profile data.
make ocount     # This tool is used for simple event counting.
make opreport   # This is the main tool for retrieving useful profile data.
make opannotate # This utility can be used to produce annotated source.
make opgprof    # This utility can output gprof-style data files for a binary.

You can use valgrind:

make valgrind-memcheck   # Launch the valgrind memcheck tool on your binary.
make valgrind-cachegrind # Launch the valgrind cachegrind tool on your binary.
make valgrind-callgrind  # Launch the valgrind callgrind tool on your binary.
make valgrind-helgrind   # Launch the valgrind helgrind tool on your binary.


utils targets

make search-pattern argv=pattern # Search for pattern in files.

make replace-in-file pattern="" replace="" file="" # Replace pattern in file.

make replace-all pattern="" replace="" # Replace pattern in all src files.

make rm-trailing-spaces # Remove trailing spaces from source and headers.

make prepend-license    # Prepend license to all source and headers files.

make diff argv=file1 file2 # Make a diff between the given files.

make xgettext           # Generate a *.pot file from source files.
make msgfmt lang=[LANG] # Generate a *.mo file and set it into locale directory
make msguniq            # Remove duplicate in a translation file (*.po, *.pot)


Configure program

Terminal settings:

Appearance

  • Font (Monospace 10 per default).
  • Font scale (1.0 per default).
  • Cursor shape (Block per default).
  • Cursor color (White per default).
  • Cursor blink mode (System per default).
  • Background color (Black per default).
  • Foreground color (White per default).
  • Allow bold (Enabled per default).
  • Bold color (White per default).
  • Pointer autohide (Disabled per default).

Settings

  • User shell (Default to your default shell).
  • Start directory when you launch a terminal.
  • Audible bell (Enabled per default).
  • Scrollback lines.

    • Unlimited (Default).
    • Settable to the value you want.

  • Scrolling.

    • Scroll on output (Disabled per default).
    • Controls whether or not the terminal will forcibly scroll to the bottom of the terminal when the new data is received.
    • Scroll on keystroke (Enabled per default).
    • Controls whether or not the terminal will forcibly scroll to the bottom of the terminal when the user presses a key.
  • Erase binding.

    • Backspace key binding (Default to automatic).
    • Delete key binding (Default to automatic).



Documentation:


README:

Online mk-project html documentation:

Download mk-project html documentation:

mk-project ReadTheDoc:

mk-project pdf doc:

mk-project texi html doc:



Files and useful links:


debian package file.


  • Use gdebi (in preference) or dpkg to install the debian package !

  • sudo gdebi mk-project-2.1-noarch.deb   # gdebi resolves dependencies.
    sudo dpkg -i mk-project-2.1-noarch.deb # dpkg doesn't resolves dependencies.

rpm package file.

  
  • mk-project-2.1-1.noarch.rpm

  • NOTE: If you get all requirements installed but the rpm program refuse to install mk-project: try the --nodeps switch.

  • This is a RPM file build on the fly without testing because I try it with Mageai but the graphical package manager rpmdrake bug by installing libvte-2.91 devel and the urpm? interface bugs too.

Tarball file containing the sources from mk-project: An autotool implemented building system Linux and POSIX Compliant systems (not tested).


To install on Linux and POSIX compliant systems simply type:
$ ./configure
$ make
$ make strip # Remove all unneeded symbols.
$ sudo make install

github repository:

Older versions of mk-project


debian package file.


  • Use gdebi (in preference) or dpkg to install the debian package !

  • sudo gdebi mk-project-1.0.deb   # gdebi resolves dependencies.
    sudo dpkg -i mk-project-1.0.deb # dpkg doesn't resolves dependencies.

Tarball file containing the sources from mk-project: An autotool implemented building system Linux and POSIX Compliant systems (not tested).


To install on Linux and POSIX compliant systems simply type:
$ ./configure
$ make
$ make strip # Remove all unneeded symbols.
$ sudo make install



Credits

Program:mk-project
Version:2.1
Platform:Linux, and Posix compliant (not tested).
Synopsis:A Terminal Development Environment, fully adaptable to your requirement, with severals functionnalities.
Licence:GPLv3.
Author:Eddie Br├╝ggemann mrcyberfighter@gmail.com
Thanks:Thank's to my beloved mother, my family and to the doctors.
Advice:Stay away from drugs: drugs destroy your brain and your life.