我想讓我的靜態庫具有Makefile,我可以有條件地將它構建爲程序來執行簡單的自檢。我現在Makefille看起來像如下:具有自檢功能的靜態庫的Makefile
OBJECTS = sm3.o ./core/sm3_internal.o
INCLUDES = -I. -I./core
CFLAGS = -g -Wall -O3
CC = c99
OUT = libsm3.a
%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS) $(INCLUDES)
$(OUT): $(OBJECTS)
ar rcs $(OUT) $(OBJECTS)
在我主要的庫文件,我有:
#ifdef TEST
main(int argc, int* argv[])
{
//my self-test logic here
}
#endif
我應該在哪裏添加-DTEST標誌?如果我把它添加到CFLAGS,然後添加一行:
test: $(OBJECTS)
庫也將建立與主,這顯然不是我想要的。
爲什麼不把測試程序在一個單獨的源文件? – immibis
@immibis沒有特別的理由,這樣驗證庫似乎是個好主意 – adamws