私は Makefiles を初めて使用し、そのような変数にリストされているすべてのアプリケーションをコンパイルしてリンクする単純なものを作成しようとしています:
APPLICATIONS = app1 app2 app3
それらはすべてソース ファイル ( ) を持ち、同じ Makefile で定義した CFLAGS と LDFLAGS でコンパイルする必要がありますが、何らかの理由で動作しません... コードは、ここ(23 ページ).c
にある例に基づいています。
APPLICATIONS = one two three
DESTDIR=/home/carles/Develop/xenomai-2.5.6
TOOLCHAIN = arm-linux-gnueabi-gcc
OBJDIR := bin
OBJS := $(addprefix $(OBJDIR)/,$(addsuffix .o,$(APPLICATIONS)))
INCLUDE_PATH = $(DESTDIR)/usr/xenomai/include
CFLAGS = -I$(INCLUDE_PATH) -D_GNU_SOURCE -D_REENTRANT -D__XENO__ -Wall -pipe
POSIX_CFLAGS = -I$(INCLUDE_PATH)/posix
LIB_PATH = $(DESTDIR)/usr/xenomai/lib
LIBRARIES = -lnative -lxenomai -lpthread -lrtdk -lrt
LDFLAGS = $(LIBRARIES) -L$(LIB_PATH)
POSIX_LDFLAGS= -Wl,@$(LIB_PATH)/posix.wrappers -lnative -lpthread_rt -lxenomai -lpthread -lrt -L$(LIB_PATH)
$(OBJDIR)/%.o : %.c
@printf '------------------: $< -> $@ : '
if [ $(TOOLCHAIN) $< -o $(OBJDIR)/$@ $(CFLAGS) $(LDFLAGS) -L$(LIB_PATH) ]
then
@echo 'done!'
fi
all: $(OBJS) | show_config
$(OBJS): | $(OBJDIR)
$(OBJDIR):
mkdir -p $(OBJDIR)
show_config:
@echo '------------------: APPLICATIONS : $(APPLICATIONS)'
@echo '------------------: DESTDIR : $(DESTDIR)'
@echo '------------------: INCLUDE PATH : $(INCLUDE_PATH)'
@echo '------------------: LIB. PATH : $(LIB_PATH)'
@echo '------------------: TOOLCHAIN : $(TOOLCHAIN)'
@echo '------------------: LIBRARIES : $(LIBRARIES)'
@echo '------------------: OBJS : $(OBJS)'
clean:
@rm $(OBJDIR) -r -f
実行する$ make
と、ディレクトリのみが作成されてshow_config
呼び出されますが、オブジェクト ファイルは作成されず、エラーは表示されません。ここで何が問題なのですか?