[英]Required prebuild rule in generic Makefile
我正在通過makefiles為Webots(機器人模擬器)編譯C ++代碼,並且使用通用的makefile Makefile.include
Webots提供的資源來簡化此過程。
我通過自己的makefile進行構建,設置了一堆必需的變量,然后調用該makefile來設置所有必需的編譯規則。 無論如何,這就是應該的方式。
我收到以下錯誤:
make[1]: *** No rule to make target 'USER_PREBUILD'. Stop.
/usr/share/webots/resources/Makefile.include:503: recipe for target 'pre-build' failed
make: *** [pre-build] Error 2
並查看相關的行(來自Makefile.include
):
$(SUPPORTED_TARGETS): post-build
USER_PREBUILD:
USER_POSTBUILD:
pre-build:
@$(MAKE) --silent USER_PREBUILD
post-build: main-build
@$(MAKE) --silent USER_POSTBUILD
$(TARGETS): pre-build
main-build: $(TARGETS)
我不確定在pre-build
和post-build
調用make
時是否沒有語法錯誤,或者USER_PREBUILD
和USER_POSTBUILD
應該是具體文件,但是即使將它們替換為$(USER_PREBUILD)
我$(USER_PREBUILD)
得到*** No targets specified and no makefile found
。 因此,我假設我需要在調用外部makefile之前設置這些變量,但是如果在構建之前我無須做的事情,語法到底是什么呢?
奇怪的是,即使出現這些錯誤,程序仍會編譯(我在build
文件夾中得到了* .o,*。d和二進制文件),但是它從未將二進制文件復制到目標文件夾中。
在該文件中進行設置的方法有點奇怪。
USER_PREBUILD:
和USER_POSTBUILD:
行無效,並且對任何人都沒有做任何事情(至少我知道)。
您有兩種選擇方式來解決此問題。
您可以在生成文件中為USER_PREBUILD
和USER_POSTBUILD
目標提供空規則:
USER_PREBUILD USER_POSTBUILD: ;
或者您甚至可以避免使用這些行來嘗試運行這些目標(以make發出的壓倒性警告消息為代價):
pre-build: ;
post-build: main-build ;
在包含Makefile.include
之后 ,在您的makefile中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.