A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nick96/basic-c-compile below:

nick96/basic-c-compile: Emacs package to create a Makefile, compile and run a C file

The purpose of this package is to automate come of the basic and repetetive tasks involved in C programming. All the tasks that this pacakge automate are language agnostic and whilst the defaults are C specific you can set them to any statically compiled language.

CC = <compiler set by basic-c-compile-compiler>
INFILE= <file-name>.c
OUTFILE= <file-name>.o

build: %(INFILE)
    $(CC) -Wall $(INFILE) -o $(OUTFILE)

clean:
    rm -rf *.o

rebuild: clean build

Note: INFILE can also be a list of files depending on what basic-c-compile-all-files is set to.

This pacakge has three entry points: basic-c-compile-file, basic-c-compile-makefile and basic-c-compile-run-c.

This command initially checks if you want to compile with or without a Makefile (just press ‘y’ or ‘n’). If you press ‘y’, it will check for a Makefile in the file’s directory. If there is one present, it will check for of the form <file-name>.o. Upon finding one, the package will run the command make rebuild. This assumes the Makefile is structured as expected. If no file is found, then make build will be run. If you choose to run without a Makefile, <compiler> <flags> -o <file-name>.<extension> <file-name>.c will be run.

<compiler> = basic-c-compiler-compiler <flags> = basic-c-compile-compiler-flags <extension> = basic-c-compiler-outfile-extension

This command creates a Makefile in the form shown above.

If the variable basic-c-compile-all-files is set to “all”, then all the files in the directory with the .c extension will be compiled. If set to “selected” you will be prompted to write a list of the files to be compiled. The files should be separated by a space. If basic-c-compile-all-files is set to anything else, only the current file will be included.

This command runs the output file <file-name>.<extension with ./<file-name>.<extension>.

All customisable setting can be found in the customisation menu (M-x customize-variable). They are in the group basic-c-compile which is in the tools section. You can also change them in your init file with: (setq <variable-name> <variable-value>).

Variable Description Default basic-c-compile-compiler Set compiler “gcc” basic-c-compile-all-files Choose the set of files compiled “all” basic-c-compiler-flags String of the flags used by the compiler “-Wall” basic-c-coomile-auto-comp Boolean defining wherer or not to update out-of-date outfiles t basic-c-compile-outfile-extension String or nil setting the extension added to the outfile “.o” basic-c-compile-make-clean Command run for make clean “rm -f *.o”

This example below is how I have the package setup for me. In my init file I have:

(require basic-c-compile)
(setq basic-c-compiler "gcc-6"
      basic-c-compile-all-files nil
      basic-c-compile-compiler-flags "-Wall -Werror -std=c11"

The main issue I find with this workflow is for programs that require file redirection because the eshell doesn’t support this. Basically, that’s the only time that I switch to a shell outside of Emacs. Currently, I am working on adding this facility.

Currently when you run basic-c-compile-run-c it hangs after basic-c-compile-file. To get passed this just press enter and it will continue. I am trying to sort this out though.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4