5つのPythonスクリプトを含むツールがあります。パイ、パイ、パイ、d.pyそしてパイ。このプログラムはLinuxで実行する必要があります。パイ別のファイルをインポートして使用するプログラムです。 A.pyを実行するには、次のコマンドを使用します。
$pythonA.py
これまで、入出力パスはA.pyにハードコードされていました。もう一つ使うべきです。ファイルの生成すべてのファイル構造と依存関係を含みます。 makefileにはpython scrip A.pyを実行するコマンドも含める必要があります。コマンドが呼び出され、make makefile
ツールの実行が開始されたら、必要な入出力パスを知る必要があります。どうすればいいですか?
編集する:
makefile は、すべての詳細を含め、次のようにする必要があります。
INPUT_PATH = list of all input paths
FILES = list of .c files located in the above specified paths
OUTPUT_PATH = output path where generated file has to be stored
command to execute python scrip:
A.py inputpath+filename outputpath
したがって、新しい入力.cファイルがあるたびにmakefileリストに追加されます。そのようなサンプルメイクファイルを提案できますか?
答え1
Pythonでは、代わりにコマンドライン引数を取得できますsys.argv
。
#!/usr/bin/env python
base_dir = /hard/coded/path
あなたは:
#!/usr/bin/env python
import sys
base_dir = sys.argv[1]
(小切手を入れるのが適切かもしれません)。 Pythonランチャーを明示的に使用している場合は最初の行を省略できますが、実行可能ファイルを作成する場合はその行が必要なため、そこにいても害はA.py
ありません。
これで、次からmakefile
指定できます。
default:
python A.py /hard/coded/path
Tab(前に8マスではなく1マスがあることを確認してくださいpython
。)
その後、実行できます(Gnu make aがない場合、または同じディレクトリにない限り、これをmake
行う必要はありません)。make makefile
Makefile
GNUmakefile
答え2
ここで私は最もエレガントなアプローチを見つけました。ファイルの生成
スピード:
- ここで変数を定義するには、次のようにします。Browser_PYSCRIPT
- 呼び出すPython(またはすべての言語)スクリプトを入力します。
- エクスポートを使用したスクリプトのエクスポート
- python -c "$$BROWSER_PYSCRIPT"を使用してスクリプトを実行します。
生成されたファイルを実行します。
使いやすい:
- ブラウザを作成してください
define BROWSER_PYSCRIPT
import sys, os
print ('sys.argv[0] =', sys.argv[0])
pathname = os.path.dirname(sys.argv[0])
print ('path =', pathname)
print ('full path =', os.path.abspath(pathname))
endef
export BROWSER_PYSCRIPT
BROWSER:
python -c "$$BROWSER_PYSCRIPT"
結果:
-> make BROWSER [Thu Jun 11 23:13:45 2020]
python -c "$BROWSER_PYSCRIPT"
sys.argv[0] = -c
path =
full path = /Users/myPC/Desktop
答え3
基本書を必ずお読みください。ファイル生成チュートリアル。
基本的には、このような場合、変数のように動作するマクロにパスを置くことです。
たとえばDIR=/your/path
。
手順は次のとおりです。
directive:
command
ディレクティブの名前がある場合default
、そうでなければall
コマンドラインからディレクティブを明示的に呼び出さずに実行されます。make directive
したがって、に電話する必要はありませんmake
。
今コマンドの前のスペースは〜しなければならないタブ文字です。またMakefile
、を入力して呼び出すためにmakefileの名前(大文字の「M」)を指定することをお勧めしますmake
。
スクリプトはコマンドライン引数(この場合はディレクトリ)を受け取る必要があり、次のように呼び出すことができます。
python A.py $(DIR)
DIR
正しいディレクトリ名を持つマクロとして。
また、次の内容をお読みください。GNU製作マニュアル
もちろん、Makefileにはこの範囲で説明するよりもはるかに多くの内容があります。 makefileはLinux開発の不可欠な部分なので、私は強く少なくとも基本はマスターすることをお勧めします!