1

プログラムを含むディレクトリがたくさんありCます。それらを1つずつコンパイルし、その結果をメインプログラムで使用する必要があります。

したがって、私のメインプログラムはディレクトリ構造をトラバースし[構造が何であるかはわかりません。時間の経過とともに変化する可能性があります]、一度に1つのCプログラムをコンパイルし、その結果を使用して計算を行います。

したがって、メインプログラムを記述し、nftwCを使用してトラバースするとします。

また

シェルのメインプログラムを作成します。

どちらのアプローチが良いですか?

4

1 に答える 1

0

互換性のあるUnix/Linux / Cygwinシステムを使用していると思います。
したがって、ディレクトリ処理に適しているため、シェルソリューションを使用することをお勧めします。

Makefileプログラムごとに

@Dogbertが言っmakeたように、いくつかのプログラムを構築するために使用することができます。ビルドは並行して実行できます(オプションを使用-j)。さらにmake、依存関係にも注意を払うことができます。

Makefileあなたが構文に慣れているかどうかはわかりません。Cしたがって、3つのファイルと1つのヘッダーファイルを必要とするプログラムについて簡単な例を示します。

program: file1.o file2.o file3.o
    gcc -o -o $@ $^

%.o: %.c header.h
    gcc -c -o $@ $< 

file1.c次のコマンドは、並列にコンパイルさfile2.cれます。file3.c次に、リンクステージは、これらのツリーのコンパイルが完了するのを待ちます。

make -j3

ディレクトリ検出

次のコマンドはそれぞれを見つけてコマンドをMakefile実行します。make

find . -name Makefile -exec make -j3 -f '{}' ';' 2>&1 | tee result.txt

コンピューターに8つのコアがある場合は、を使用できます-j8

メインプログラムで再利用する

ビルド結果はシェル画面に表示され、result.txtファイルにも保存されます。

詳しくは?

私はあなたのシステムやあなたの知識が何であるかを知りません。これがお役に立てば幸いです。一部の部分がよくわからない場合は、詳細をお問い合わせください。;-)

于 2012-11-17T01:23:10.910 に答える