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 !


Screenshots

Description:

mk-project

The mk-project program icon

Presentation

mk-project generate you a Makefile based project fully according to your settings...



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 readelf     # display informations about the ELF binary.
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.

pindent

make pindent      # Use pindent to format source code


Documentation targets

mk-project documentation

make texi2info   # Make info  doc file from *.texi file.
make texi2html   # Make html  doc file from *.texi file.
make texi2xml    # Make xml   doc file from *.texi file.
make texidvi2pdf # Make pdf   doc file from *.texi file.
make texi2html5  # Make html5 doc file from *.texi file.
make texi2pdf    # Make pdf   doc file from *.texi file.
make texi2man    # Make man   doc file from *.texi file.
make texi2odt    # Make odt   doc file from *.texi file.
make texi2latex  # Make latex doc file from *.texi file.
make texi2plain  # Make plain doc file from *.texi file.
make texi2epub   # Make epub  doc file from *.texi file.

make rst2html    # Make html  doc file from *.rst file.
make rst2pdf     # Make pdf   doc file from *.rst file.
make rst2man     # Make man   doc file from *.rst file.
make rst2odt     # Make man   doc file from *.rst file.
make rst2xml     # Make xml   doc file from *.rst file.
make rst2latex   # Make latex doc file from *.rst file.
make rst2html5   # Make html5 doc file from *.rst file.
make rst2epub    # Make epub  doc file from *.rst file.
make rst2info    # Make info  doc file from *.rst file.
make rst2plain   # Make plain doc file from *.rst file.

make md2html     # Make html  doc file from *.md file.
make md2html5    # Make html5 doc file from *.md file.
make md2pdf      # Make pdf   doc file from *.md file.
make md2man      # Make man   doc file from *.md file.
make md2odt      # Make odt   doc file from *.md file.
make md2xml      # Make xml   doc file from *.md file.
make md2latex    # Make latex doc file from *.md file.
make md2epub     # Make epub  doc file from *.md file.
make md2info     # Make info  doc file from *.md file.
make md2plain    # Make plain doc file from *.md file.

Documentation displaying targets

make show-info   # Display info documentation.
make show-man    # Display man documentation.
make show-html   # Display html documentation.
make show-html5  # Display html documentation.
make show-xml    # Display xml  documentation.
make show-pdf    # Display pdf  documentation.
make show-odt    # Display odt  documentation.
make show-epub   # Display epub documentation.


dist targets

make dist-tar     # Generate a tar archive from the project.
make dist-tar-gz  # Generate a tar.gz archive from the project.
make dist-tar-bz2 # Generate a tar.bz2 archive from the project.
make dist-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 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.


utils targets

make search-pattern argv=pattern # Search for pattern in 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).



Shortcuts memo

Shortcut functionality Mnemonic
Ctrl + n New project n = new
Ctrl + r Reconfigure project r = reconfigure
Ctrl + l Load project l = load
Ctrl + a Add file(s) to project a = add
Ctrl + m make terminal m = make
Ctrl + e edit terminal e = edit
Ctrl + Maj + c configuration c = configuration

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-1.0.0.deb   # gdebi resolves dependencies.
    sudo dpkg -i mk-project-1.0.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

github repository:



Credits

Program:mk-project
Version:1.0.0
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.