2013-06-29 17 views
0

我是新的makefiles,我試圖改變內部生成文件的目錄,我的問題是,我無法改變這些目錄,我收到此消息:/ bin/SH:1:CD無法CD到/ home/.......Makefile錯誤光盤不能光盤

我的代碼是:

# !/bin/sh 


CHECK_LIB = true` 
DIR= /home/me/dir/ 

bootstrap: 
ifeq($(CHECK_LIB), true) 
cd $(DIR); ./bootstarp -c ; 
endif 

也是我試圖$(shell cd $(DIR) ; ls) 沒有任何的運氣。 有一些好的意見我應該怎麼做/嘗試? os:ubuntu 12.04 Tks!

+0

您的文件中有一些語法錯誤。這是從你的原始複製/粘貼嗎?或者當你複製它時是否犯了錯誤?如上所列,它不會匹配'CHECK_LIB',因爲它的值是'true \''而不是'true'。 – lurker

回答

1

首先,由於Makefile不是shell腳本,因此首先不需要/ bin/sh,然後,由TAB預先編寫規則。但是,條件不是規則的一部分,因此,它們不需要用TAB作爲前綴。所以,試試這個:

CHECK_LIB = true 
DIR = /home/me/dir/ 

bootstrap: 
ifeq($(CHECK_LIB), true) 
<TAB>cd $(DIR) && ./bootstarp -c 
endif 

您還可以使用使shell命令而不是在規則:

ifeq($(CHECK_LIB), true) 
BOOTSTRAP_OUT := $(shell cd $(DIR) && ./bootstarp -c) 
endif 

,但我想這不是你想要的,因爲它會任何規則之前執行,不考慮任何依賴。通過這種方式,您可以獲取makefile中文件/文件夾的列表:

FILELIST := $(shell cd $(DIR) && ls) 
$(warning FILELIST is $(FILELIST)) 
+0

它的工作感謝您的幫助! – catalin

+0

@catalin我很高興我可以幫助,現在你可以upvote並接受答案(http://stackoverflow.com/about) – pmod