2017-03-11 13 views
0

私は次のセットアップがありますMakefileで要件/依存関係を検証する方法は?

/- 
    .project-name 
    Makefile 
    ... 

.project-nameの内容はMakefileのターゲットのdummy

cat .project-name 
dummy 

一つであるが、これは(sedを使用して)(その名の通り)の変化set_project_nameですディレクトリの周りのすべてのプロジェクトの名前といくつかのパスを調整する

set_project_name: 
    @ag [dD]ummy -l0 | xargs -0 sed -i "s/[dD]ummy/${PROJECT_NAME}/g" 
    ## Renombrar la carpeta del proyecto 
    @[[ -d dummy ]] && mv dummy/pipelines/dummy.py dummy/pipelines/$(PROJECT_NAME).py 
    @[[ -d dummy ]] && mv dummy $(PROJECT_NAME) 
変数 PROJECT_NAMEでも

は、私は私が使用してみましたMakefile

で何かを実行する前に、このユーザーは.project-nameの内容を変更することを検証するだけで

PROJECT_NAME := `cat .project-name` 

ある

TEST_PROJECT_NAME_2 := [[ 'dummy' == $(cat .project-name) ]] && $(error "ERROR: The name of the project can not be 'dummy', please use another name") 

しかし、動作していません。実行されますが、常にエラーがスローされます。

Makefileの上部にifeqと一緒に試しましたが、どちらも実行されていません。私が間違っていることは何ですか?また、これを行うための最良のアプローチですか?

答えて

1

言語makeは、シェルが使用する言語と同じではありません。

PROJECT_NAME := `cat .project-name` 

のようなものが同様に、

TEST_PROJECT_NAME_2 := [[ 'dummy' == $(cat .project-name) ]] ... 

はしないだろう。PROJECT_NAME .project-nameファイルの内容(それは文字列 "`猫.project-NAME`" を割り当てますことはありませんあなたはそれがシェルコマンドの標準出力を割り当てるには。ん、あなたは、このような

FOOFILE := $(shell cat foo) 
+0

としてmake構文を使用する必要があると思う何をあなたが示唆したように、私は修正あなたの助けの@Jensいただきありがとうございますが、エラーはまだを持続します'$ PROJECT_NAME}'; $ PROJECT_NAME:= $(shell cat .project-name) 'また、 ' TEST_PROJECT_NAME_2:= if $ {PROJECT_NAME}]; $(エラー "ERROR:El nombre del proyectoはダミー 'と呼ばれています。 fi; ' – nanounanue

+0

検証部分については、[here](https://www.gnu.org/software/make/manual/html_node/Conditional-http://www.news.com)に記載されているように、' ifeq'、 'ifdef'、' ifndef'などを使用してください。 Example.html) – nanounanue

関連する問題