0

私は 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呼び出されますが、オブジェクト ファイルは作成されず、エラーは表示されません。ここで何が問題なのですか?

4

2 に答える 2

0

ファイルone.ctwo.cthree.c存在せず、ビルドする必要がなかったため、機能しません。

于 2013-04-12T09:17:45.383 に答える