我有一個包含在N
文件夾組織源文件和頭文件的項目(我們姑且稱之爲folder1
,folder2
,...,folderN
)ÇMakefile文件,編譯項目的部分具有不同的規則
我想要編譯folder1
與-Wall
但其他人與-w
。 問題是其他文件夾(2到N)只包含文件夾1中某些源文件中包含的頭文件。
當我編譯folder1
,-Wall
也將適用於該文件夾中的標題,我不希望這樣。
這是我迄今爲止所使用makefile文件:
CC=gcc
LIBS=-iquotefolder2 ... -iquotefoldern
SOURCES=$(wildcard folder1/*.c) $(wildcard folder2/*.c) ... $(wildcard foldern/*.c)
OBJECTS=$(SOURCES:.c=.o)
folder1/%.o: folder1/%.c
$(CC) -Wall $(LIBS) -c -o [email protected] $^
folder2/%.o: folder2/%.c
@$(CC) -w $(LIBS) -c -o [email protected] $^
...
folderN/%.o: folderN/%.c
@$(CC) -w $(LIBS) -c -o [email protected] $^
lib.dll: $(OBJECTS)
@$(CC) -w -shared -Wl,-soname,[email protected] -o [email protected] $^
all: lib.dll
有什麼辦法來實現這一目標? 我也嘗試將folder2編譯到lib.a中的folderN,並在編譯folder1時鏈接該庫,但gcc將(顯然)嘗試包含頭文件
https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html(任何人,如果確實是OPs問題的解決方案,請隨時將信息寫入實際答案中)。 – hyde
所以你想'folder1/source.c'用'-Wall'編譯,但用'-w'包含'folder2/header.h'文件? –
是的,這是正確的 –