【发布时间】:2016-10-28 10:59:37
【问题描述】:
我有一个项目,其中包含在N 文件夹中组织的源文件和头文件(我们称它们为folder1、folder2、...、folderN)
我想用-Wall 编译folder1,但其余的用-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 $@ $^
folder2/%.o: folder2/%.c
@$(CC) -w $(LIBS) -c -o $@ $^
...
folderN/%.o: folderN/%.c
@$(CC) -w $(LIBS) -c -o $@ $^
lib.dll: $(OBJECTS)
@$(CC) -w -shared -Wl,-soname,$@ -o $@ $^
all: lib.dll
有什么方法可以实现吗? 我还尝试将文件夹 2 编译到 lib.a 中的文件夹 N 并在编译文件夹 1 时链接该库,但 gcc 将(显然)尝试包含标题
【问题讨论】:
-
gcc.gnu.org/onlinedocs/cpp/System-Headers.html(任何人,如果确实是解决 OPs 问题,请随时在此处写下信息作为实际答案)。
-
所以您希望
folder1/source.c与-Wall一起编译,但folder2/header.h包含在带有-w的文件中? -
是的,没错