
私はコマンドラインインターフェイス(Linuxなど)に慣れていますが、次のようなコマンドを見つけました。
子[コマンド]
..例えば
子プッシュ
私は(C ++で開発された)プロジェクトを持っていますが、それが正しいかどうかを知りたいです。はい次のカスタムコマンドを生成できます。
(私のプロジェクトが「MyProject」だと仮定):
私のプロジェクトはコンパイルされます。
それでは、どちらがgcc
コンパイルコマンドを実行しますか?
注:「コンパイル」などの独自のコマンドを作成することは可能ですが、「参照」と「コマンド」を使用してコマンドを作成したいと思います。
答え1
慣れたら、シェルスクリプトより簡単な方法は、次のようにすることです。作る、以前にその参照を見たことがあります。
非常に単純なmakefileは次のとおりです。
myproject: myproject.cpp
g++ myproject.cpp -o myproject
指定しない場合、デフォルトでは最初のターゲットが選択されます。make
この場合、ターゲットは1つだけなので、そこに見えるように実行されます。ターゲットはコロンの前のラベル(myproject)です。コロンの後ろは必須ターゲットです。これらのターゲットがリストされていない場合は、ファイルと見なされます。この場合、myprojectターゲット(「myproject」バイナリ)の出力後にmyproject.cppが変更されていない場合、makeは何もしません。その場合、再コンパイルされます。
状況がより複雑になるにつれて、makeの使用の価値はより明確になります。
flags = -Wall -g -O2
myproject: myproject.h myproject.cpp somepart.o
g++ $(flags) somepart.o myproject.cpp -o myproject
somepart.o: somepart.h somepart.cpp
g++ $(flags) -c somepart.cpp -o somepart.o
.h ファイルは必須コンポーネントです。ファイルを変更する場合は、そのファイルが必要な部分を再コンパイルする必要があるためです。これでmake somepart.o
、オブジェクトをコンパイルしたり、make
最新の「somepart.o」が必要な最初のターゲット(myproject)を使用できるようになり、使用できない場合はすべてのアイテムも作成できます。
bashスクリプトを使用してこれを行うのはそれほど簡単ではありません。おそらくそのmake
理由です。残念ながら、「コツを身につけること」には時間がかかることがあります。 l0b0 は以下の項目にリンクされています。
http://www.gnu.org/software/make/manual/make.html
最初に注目すべき点は、makeが空白に敏感であるということです。特に、スペースの代わりに実際のタブを使用する場合はさらにそうです。
答え2
答え3
標準コマンドを維持することをお勧めします。つまり、make
プロジェクトなどをコンパイルします。共同作業者が買収するのは簡単です。たくさん設定が簡単で、ランダムに覚えておくべき項目が少なくなります(または次のシステム/プロジェクトに設定)。あなたが作業するほとんどのプロジェクトはあなた自身のものではなく、そのマシンをパッチに保つことは多くの問題を引き起こすでしょう。