- 论坛徽章:
- 4
|
给你一个例子吧,看粗体部分。
CC = cc
CXX = g++
C_ARGS_ST = -Wall -g -fPIC
C_ARGS_MT = -Wall -g -D_PT_MULTI_THREAD_
#根据当前的机器型号编译不同的版本
ifeq ($(shell getconf LONG_BIT), 32)
TAG = 32
else
TAG = 64
endif
CGI_LIB_ST = libptlogin_api_st_$(TAG).a
CGI_LIB_MT = libptlogin_api_mt_$(TAG).a
CPP_FILE = $(wildcard ./*.cpp)
O_CXX_FILE_ST = $(patsubst ./%.cpp, %_st.o, $(CPP_FILE))
O_CXX_FILE_MT = $(patsubst ./%.cpp, %_mt.o, $(CPP_FILE))
all : $(CGI_LIB_ST) $(CGI_LIB_MT)
%.d:%.cpp
set -e; rm -f $@; \
$(CXX) -MM $(C_ARGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@.tmp; \
sed "1,1s/^[a-zA-Z]*./&$(TAG)./g" $@.tmp > $@; \
rm -f $@.*
include $(CPP_FILE:.cpp=.d)
%_st.o : %.cpp %.d
$(CXX) -o $@ $(C_ARGS_ST) -c $(patsubst %_st.o, %.cpp, $@)
%_mt.o : %.cpp %.d
$(CXX) -o $@ $(C_ARGS_MT) -c $(patsubst %_mt.o, %.cpp, $@)
$(CGI_LIB_ST): $(O_CXX_FILE_ST)
ar -rs $@ $^
$(CGI_LIB_MT): $(O_CXX_FILE_MT)
ar -rs $@ $^
clean:
rm -rf $(CGI_LIB_ST) $(CGI_LIB_MT) *.o *.d
|
|