目錄結(jié)構(gòu)
pro--
main.c
dir--
add.h add.c
include--
test_static.h
static--
libstatic.a
main.c
#include <stdio.h>
#include <add.h>
#include <test_static.h>
#include <pthread.h>
static void* test_thread(void*);
int main()
{
int num = 100;
#ifdef _TEST_NUM
num += 100;
#else
num *= 100;
#endif
printf("num=%d\n", num);
printf("add=%d\n", add(2, 3));
printf("power=%d\n", power(3, 4));
pthread_t tid;
pthread_create(&tid, NULL, test_thread, NULL);
return 0;
}
void* test_thread(void* arg)
{
return NULL;
}
makefile
all : main
.PHONY : clean
CFLAGS = -std=c99 # c99
CFLAGS += -L./static #靜態(tài)庫(kù)的位置
LDFLAGS += -lpthread
LDFLAGS += -lstatic #鏈接static庫(kù)
#CFLAGS += -static
CFLAGS += -ggdb #生成調(diào)試信息
CFLAGS += -D_TEST_NUM #定義宏
#CFLAGS += -Wall #生成更多的警告
CFLAGS += -Werror #將警告視為錯(cuò)誤
CFLAGS += -Idir #頭文件位置
CFLAGS += -Iinclude
#頭文件路徑
CFLAGS += -I .
# 包含當(dāng)前目錄 和子目錄dir下的所以.c文件
SRCS = $(wildcard *.c dir/*.c)
#把.c文件變成對(duì)應(yīng)的.o文件 賦給OBJS變量
OBJS = $(patsubst %c, %o, $(SRCS))
ALL:
@echo $(SRCS)
@ehco $(OBJS)
TARGET = main
# $@--目標(biāo)文件 @^--所有依賴的文件 @<--第一個(gè)依賴的文件
# 鏈接庫(kù)必須放在 .o 文件的后面 不會(huì)鏈接錯(cuò)誤
$(TARGET) : $(OBJS)
cc $(CFLAGS) -o $@ $^ ${LDFLAGS}
%o:%c
cc $(CFLAGS) -o $@ -c $<
clean:
rm $(TARGET) *.o