• 締切済み

makefileの中のソースプログラム指定について

プログラムをコンパイル・リンクして実行ファイルを作成するためのmakeの利用についてお尋ねします。mekefileを編集してmakeコマンドを投入すればあとは指示通りに実行ファイルを作成してくれるわけですが、ソースプログラムを指示するところではすべてのファイル名を記入する必要があるのでしょうか。それともワイルドカードというか、*.f90のようにフォルダ内のすべての.f90を対象にして処理するように指示できないでしょうか(途中で出力されるオブジェクトファイルもですが)。ソースファイルが小分けにして50個ぐらいあるのですが。よろしくお願いします。 Windows10上でのGnu make ver 4.1です。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1619/5654)
回答No.1

関連するQ&A

  • makefileでのファイル指定について

    プログラムを実行するためのコンパイルでは、makeを使うことが多いと思います。makefileというファイルにその内容を書いておくわけですが、makeというのは必要なものをかき集めて(不必要なものは集めない)セットしていくということなるわけですね。ファイルを集めるというのは結局はフォルダを指定するということなのですが、そのフォルダとは相対パスで指定するのか、絶対パスで指定するのか考え方を教えて頂きたいのですが。私の予想では当然ながら相対パスが普通だということなのですが。また絶対パスでもいいということにもなるでしょうか。./とかつけてフォルダ指定すると相対パスになるとか。makeは苦手でそこを確認したいと思いました。 あと、必ずではありませんが./configureとかしますが、これは何をしているのでしょうか。 よろしくお願いします。OSとしてはWindows, WSLというところでの利用を考えています。

  • cobolの関連ソースについて

    今、触ったこともないcobolのソースの管理をやれ、と言われてます。 で、cobolの実行プログラム、拡張子は、*****.so 見たいな感じなのですが、それをコンパイルするのに、多くのソースがいるみたいなのです、その関連を調べろ、と言われました。たとえば、cobolのmakefileと呼ばれているものを、unix上でviで開いてみると、「ヘッダープログラム」なるコメント文が書いていたり、オブジェクトとか書いていたり、、そして、そのヘッダーの部分をみると、たしかにプログラムの名称が書いているので、今度はそのプログラムの中身を見てみると、同じように、また違うプログラムを参照しているようなのです。ひとつの実行ファイルを生成するのに、ソースがツリー構造になっていて、それをすべて理解する必要があるのですが、中身をみたときに、どういうコマンド等を参照していけばいいのかわかりません。 分かりやすく整理すると、ある実行プログラムを生成するのに、ソースが必要なのですが、そのソースの全てを洗い出すには、どうすればいいのか?ということなのですが、 詳しい方、ぜひよろしくお願いします!

  • ソースを2つ作った場合のとき

    こちらのカテゴリーでは初めて質問させていただきます。宜しくお願いします。 先日からC言語を勉強し始めて、ボーランドから無料配布されているやつをDLし、設定までは終わりました。 それで いざプログラム作成しようとしたのですが次のような状態になってしまいました 【ファイル】→【新規作成】→【プロジェクトタブ】からプロジェクト名 をつける。そのあと【新規作成】→【ファイル】→【C/C++ファイル】でファイル名をつける。 そしてプログラムを作成、コンパイルなどをすると、そのときの実行結果はちゃんと出るのでます。(これをソース1とします。) その後同じように【ファイル】→【新規作成】→【ファイル】でプログラムを作り実行をするとここでもまたちゃんと結果を出ます。(これをソース2とします) そのあと先ほど作ったソース1を見直そうとして、もう一度実行するとそのままソース2の結果が出るのですがこういうときはどうすればよろしいのですか? すごく長々となり申し訳ありません。意味不明だったならばもう一度後で書き直します。 それとプログラミングなどは全くの初心者で本当に申し訳ありませんが宜しくお願いします

  • gfortranでmakefile

    gfortranのmakefileを作成し、"make test"と実行しても成功しません。 どうすればいいのでしょうか? どこか間違いがあるでしょうか? 下にmakefileを全文載せましたのでアドバイスをよろしくお願いします。 OBJS = main.o tree.o treef.o test : ${OBJS} gfortran -c test ${OBJS} main.fやtree.fやtreef.fのファイルの中身は問題ありません。 他のパソコンではキチンとコンパイルに成功しています。 ちなみに、"make test"と実行して出てくるエラーメッセージが「makefile:3 *** 最初のターゲットより前にコマンドを起動. 中止.」 です。

  • gfortranでmakefile

    gfortranのmakefileを作成し、"make test"と実行しても成功しません。 どうすればいいのでしょうか? どこか間違いがあるでしょうか? 下にmakefileを全文載せましたのでアドバイスをよろしくお願いします。 OBJS = main.o tree.o treef.o\ test : ${OBJS} gfortran -c test ${OBJS} main.fやtree.fやtreef.fのファイルの中身は問題ありません。 他のパソコンではキチンとコンパイルに成功しています。

  • プログラムについて

    プログラムを勉強していてわからないことが3つあります。 1ソースプログラムを編集し、次にコンパイルしてオブジェクト プログラムを作成し、さらに関数を引用した場合などには他の オブジェクトプログラムと結合し、最終的に実行形式の プログラムを得て実行します。 と教科書に書いてあるのですが、関数を引用した場合などには他のオブジェクトプログラムと結合するとはどういうことですか? 2メモリを多く費やせば処理は速くなり、処理速度を犠牲にすればメモリを節約できるとありますがなぜこうなるのですか? メモリを節約するとどんなメリットがありますか? 3プログラムの高速化では 必要な演算回数を少なくする。無駄な繰り返しを省く。 速い演算を多くし、遅い演算を少なくする。 とあるのですが具体的にどういうことですか? プログラム初心者です。 わかりやすく教えていただければ幸いです。 どうぞよろしくお願いいたします。

  • [COBOL] ソースの復帰

    COBOLのプログラムなのですが、 コンパイル済みのオブジェクトから ソースを引っ張りだす、というようなことはできるのでしょうか? プログラム自体はあるのですがソースが見つからなくて 困っております。 宜しくお願いいたします。

  • C言語でプログラムを作る課題があたえられました

    プログラムは作ったのですが、それを書いた拡張子『.c』のソースファイルとコンパイル後に作成された拡張子『.exe』のファイルを提出することになっています。『.c』のファイルとは『C source』に書かれているプログラムしょうか。また、『.exe』のファイルとはアプリケーションに書かれているものでしょうか、それともobject fileに書かれているものでしょうか。35年前にfortranは勉強して少し、プログラムを作った経験はあるのですが、今では言葉の意味が理解できません。恐れ入りますが詳しく教えてください。

  • Windows7のコマンドラインでのnmake

    標題のようにWindows7のコマンドラインでnmakeを利用したいと思います。ソースプログラムを作成してコンパイルするということが基本だと思っています。 例えば、wave.fというフォートランのソースをgfortranでコンパイルしてwave.oというオブジェクトファイルを作成し、wave.exeを生成するというような動作をmakefileで実行する実験をしているのですが、エラーとなります。 ○ 以下に test.mak というmakefileを作成しました。いろんなサンプルファイルを参考にしてこのような動作かなと思って作成しました。右の←以下は私はこういうつもりで書いたというものです。 FC = gfortran          ←コンパイラ FFLAGS = -Wall ←オプション objects=wave.o         ←オブジェクト名 # wave: $(objects) $(FC) $(FFLAGS) $(objects) -o wave←コンパイル # wave: $(objects) ← オブジェクトファイルを集めて実行ファイルを作成する。 # clean :       ← はじめからやり直すためにオブジェクトファイルを削除する(クリーンにする)。 rm *.o    ← 削除 ○実行 nmake test.mak あるいは nmake -f test.mak などです。 結果は、NMAKE: fatal error U1073: 'wave.o'のビルドの方法が指定されていません。stop. gfortran -Wall wave.o -o wave というところが、オブジェクトファイルwave.oを使って実行ファイルwaveを作成するという意味なので、wave.fというファイルを探しだしてコンパイルしてwave-oを生成する、という筋書きになっていると思っていました。 昔からmakeが苦手なのでちょっと時間を取って考えているところです。 test.makのどこが間違っているのでしょうか。添削をお願いしたいのですが。 よろしくお願いします。Cのカテゴリの方も十分ご存知かと思ったのでこちらに書きました。

  • Windows環境へのmakeについて

    Windowsの開発環境でmakeを使用したいと思います。シェルでフォルダを選んでmakeコマンドを投入するとmakefileの指示に従ってそのフォルダのソースファイルなどを集めて実行ファイルを作成するところまでやってくれるというものです。 Linuxはmakeコマンドが当然ながら普通に利用できるのでその方向に沿ってシェルに依存したmakefileを作成すると思います。Windowsの場合は基本はmakeコマンドがないので、別途、取り寄せるのだと思います。 今の状態で、Windowsのパワーシェルでwhich make -a とすると、Rtools, bcc55, Gow(Gnu on Windows)のmake.exeが出てきます。適切なmakeが最初に呼ばれるように環境を編集してあとはmakefileを編集すればいいということなのでしょうか。Windowsにはnmake, cmakeなどいろんなものもありますが。コンパイラはgfortranとかgccなどのGNUのコンパイラで、これはシェルからコンパイルできるようになっています。Visual studio系はすぐには使いません。 Windowsのシェルでmakeを利用する手順を教えて頂きたいと思います。よろしくお願いします。

専門家に質問してみよう