我試圖整理我的項目目錄如下的Makefile子目錄
外殼
| INC/[頭文件]
| OBJ/[目標文件]
| SRC/[源文件]
| Makefile文件
|可執行
編譯沒有在根文件夾中的一切錯誤,但我遇到了困難修改我的makefile,以適應不同的直接擁有一切法制前提。
這裏是我的makefile怎麼看不目錄
OBJS = shutil.o parser.o sshell.o
HEADER_FILES = shell.h parser.h
EXECUTABLE = sshell
CFLAGS = -Wall
CC = gcc
#Create main executable
$(EXECUTABLE): $(OBJS)
$(CC) -o $(EXECUTABLE) $(OBJS)
#Create object files
%.o: %.c
$(CC) $(CFLAGS) -I. -c -o [email protected] $<
$(OBJS) : $(HEADER_FILES)
我已經嘗試添加目錄到定義(obj的/和INC /目錄)
OBJS = obj/shutil.o obj/parser.o obj/sshell.o
而且修改的每一個實例%.o和%.c到obj /%.o和src /%。c
據我所知,一切都應該沒問題,但是當我從根目錄進行製作時,出現此錯誤
gcc -Wall -Iinc -c -o obj/shutil.o src/shutil.c
src/shutil.c:8:23: fatal error: inc/shell.h: No such file or directory
compilation terminated.
任何人都可以找到我在這裏做錯了嗎?我一直在爲此掙扎好幾天。
您是否嘗試添加到您的編譯標誌:'-I..'?我個人會將* .o編譯爲src的makefile,並在編譯的lib文件中構建最終結果。我不是說這是最好的,只是我如何去做。如果您想查看我的Makefiles示例,請參閱[這裏](https://github.com/ShabbyX/shCompiler) – Shahbaz
我無法重現該錯誤,並且使用完全相同的命令。你能發佈你正在使用的實際makefile嗎?另外,你使用的是哪個版本的gcc? – Beta
看起來像您將shutil.c更改爲#include「inc/shell.h」。把它改回「shell.h」,-Iinc應該把它拿起來。 – blueshift