简体   繁体   中英

How do I add my own header file directory to Mac Terminal gcc?

I'm trying to compile a C program (myProgram.c) that includes a custom .h file that is in a specified directory. How can I add the directory to gcc so that I can build myProgram.c anytime using just a command like gcc myProgram ( with no flags and what not )

You can do this by altering the C_INCLUDE_PATH environment variable, eg

C_INCLUDE_PATH=~/include
export C_INCLUDE_PATH

You can add that to your .bashrc or .bash_profile or whatever to always have the environment variable set properly. Here's a reference on how you can do the same for libraries and C++ .

had to use a whole set of flags to get this working on El Capitan:

export DYLD_LIBRARY_PATH=/usr/local/include
export CPPFLAGS="-I/usr/local/include/snappy-c.h"
export CFLAGS="-I/usr/local/include/snappy-c.h"
export CXXFLAGS="-I/usr/local/include/snappy-c.h"
export LDFLAGS="-L/usr/local/lib"

Makefiles would be helpful in this situation, they ease the compilation of multiple file projects.

Assuming you are using these same files and they are in the same directory

  • main.c
  • custom.c
  • custom.h

A sample makefile could look like

all: main.o custom.o
    gcc main.o custom.o -o myExecutable

main.o: main.c
    gcc -c main.c

custom.o: custom.c custom.h
    gcc -c custom.c

clean:
    rm -f *.o myExecutable

Or something similar, the general format is

name: dependency
    command

So by running make all from the commandline you would be instructing the compiler to compile your source code into object files, and then link those object files together into an executable.

Make should be easily available on any modern system. For more information on basic makefiles and usage refer to this simple tutorial: http://mrbook.org/tutorials/make/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM