簡體   English   中英

構建錯誤:make:“編譯”無事可做

[英]Build error: make: Nothing to be done for 'compile'

我需要將自己的 package 添加到 openwrt 圖像中。 在項目的 wiki 上,我找到了這篇文章
我嘗試按照說明進行操作,但最后我沒有設法將自己的 package 添加到源代碼樹中(構建忽略了它的存在)。
因此,我試圖找到其他方法。 原來是這條指令 我按照那里的指示編譯了我自己的 package。
但正如您所看到的,package 的源代碼不依賴於其他人,也不需要任何其他構建 header 文件。 此外,他的Makefile完全包含編譯說明。

define Build/Compile
    $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/helloworld.o -c $(PKG_BUILD_DIR)/helloworld.c
    $(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/$1 $(PKG_BUILD_DIR)/helloworld.o
endef

但是現在這不適合我,因為我想添加的另一個 package 已經具有這樣的依賴關系。 我試圖像這樣繞過它們(將源代碼復制到構建文件夾並調用位於那里的 makefile )但沒有任何結果:

define Build/Prepare
    echo $PKG_NAME
    mkdir -p $(PKG_BUILD_DIR)
    cp $(SOURCE_DIR)/* $(PKG_BUILD_DIR)
    $(Build/Patch)
endef

define Build/Compile
    $(PKG_BUILD_DIR) $(MAKE)
endef

我得到下一個 output:

    $ make -C package/feeds/mypackages/helloworld compile TOPDIR=$PWD
make: Entering directory '/home/username/mypackages/examples/helloworld'
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
bash: mkhash: command not found
make: Nothing to be done for 'compile'.
make: Leaving directory '/home/username/mypackages/examples/helloworld'

我對於 package 和二進制文件的完整 Makefile :

include $(TOPDIR)/rules.mk
PKG_NAME:=helloworld
PKG_VERSION:=1.0
PKG_RELEASE:=1
SOURCE_DIR:=/home/username/helloworld
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
    SECTION:=utils
    DEPENDS:= +libstdcpp
    TITLE:=helloworld
endef
define Package/helloworld/description
    A simple "Hello, world!" -application.
endef
define Build/Prepare
    echo $PKG_NAME
    mkdir -p $(PKG_BUILD_DIR)
    cp $(SOURCE_DIR)/* $(PKG_BUILD_DIR)
    $(Build/Patch)
endef
define Build/Compile
    $(PKG_BUILD_DIR) $(MAKE)
endef
define Package/helloworld/install
    # Install binnary
    #$(INSTALL_DIR) $(1)/usr/bin
    #$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/bin/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

,

TARGET = heloworld
OBJS = heloworld.o
CFLAGS += -Wall -Wextra 
LDFLAGS += -lxsacpp -lxsac -lubus -lubox 
CXXFLAGS += $(CFLAGS) -std=c++14

%.o : %.cpp
    $(CXX) -c $(CXXFLAGS) $< -o $@

all: $(TARGET)

$(TARGET): $(OBJS)
    $(CXX) $(LDFLAGS) -o $@ $^

clean:
    rm *.o $(TARGET)

實際上我的問題是,需要在Makefile中設置什么才能正確復制文件並為 package 二進制文件調用本地Makefile

為了復制文件和目錄,您可以使用以下步驟:

# copy all files and directories using **cp -r -f **
define Build/Prepare
    echo $PKG_NAME
    mkdir -p $(PKG_BUILD_DIR)
    cp -r -f $(SOURCE_DIR)/* $(PKG_BUILD_DIR)
    $(Build/Patch)
endef

為了執行本地 makefile 使用以下步驟:

# Execute local makefile by giving path using '-C' option
define Build/Compile
     `$(MAKE) -C $(PKG_BUILD_DIR)`
endef

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM