タグ

解説とmakeに関するiwwのブックマーク (6)

  • Makefile の補足

    make は実行プログラムの作り方を知っている make コマンドは, 実は C や C++ のソースプログラムから実行プログラムを作製する方法を最初から知っています. このため, 一つのソースプログラムから一つの実行プログラムを作成するような場合は, Makefile において手続き(コマンド)の記述を省略することができます. CFLAGS = -I/usr/X11R6/include LIBS = -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread all: prog1 prog2 prog1: prog1.c --Tab-->$(CC) $(CFLAGS) prog1.c -o prog1 $(LIBS) prog2: prog2.c --Tab-->$(CC) $(CFLAGS) prog

    iww
    iww 2017/08/22
    LDLIBS
  • make の -C オプションについて

    makefile を読み込むなどの動作の前に、ディレクトリ dir に移動する。 (中略) このオプションは通常、make を再帰的に呼び出すときに使われる。 と書いてあります。 ほとんどの場面で 「make -C dir」は「cd dir; make」と同じと考えていいと思うが、 わずかに挙動が違う部分があることに最近気づいた。 実験のため、次のような /home/foo/Makefile, /home/foo/bar/Makefile という2つの Makefile を用意。 /home/foo/Makefileの内容: all: @ echo CURDIR = $(CURDIR) @ echo PWD = $(PWD) @ cd bar; $(MAKE) /home/foo/bar/Makefileの内容: all: @ echo CURDIR = $(CURDIR) @ echo

    iww
    iww 2017/08/18
    『$(PWD) は使うべきでない。』 なるほど面白い
  • GNU makeとinclude - kaityoの日記

    ずっとmakefileでわからなかったことがあったのだが、今日まじめに調べてようやく分かった。 makefileでソースの依存関係をいちいち手書きするのが面倒なので、 SRC=$(shell ls *.cc) dep: g++ -MM -MG $(SRC) >makefile.depend というルールを作っておき、makefileの最後で -include makefile.depend としておく。こうすると $ make dep とやればmakefile.dependができる。さて、makefile.dependが古かったり存在しなかったりした場合に自動的に作りたくて、 SRC=$(shell ls *.cc) makefile.depend: g++ -MM -MG $(SRC) >makefile.depend -include makefile.depend とかやっていると、

    GNU makeとinclude - kaityoの日記
    iww
    iww 2017/07/18
    依存関係ファイルを自動生成してインクルードする構成のとき、make cleanでも依存関係ファイルを作成してしまう不具合の解説。 回避策はとくになし
  • 1. ガイド — OMakeマニュアル 日本語訳

    1. ガイド¶ あなたがOMakeを始めて使うのであれば、 2. OMakeクイックスタートガイド はどのようにプロジェクトを始めるべきなのかについて、簡単に説明してくれるでしょう。 3. OMakeビルドサンプル ではプロジェクトをビルドするための、より詳細なコードサンプルを紹介しています。そして 4. OMake言語の概要と構文 では実際にプログラミングするときに役立つ、いくつかの一例を紹介しています。 1.1 注意事項¶ OMakeマニュアル 日語訳 v1.3.2 このドキュメントは OMake バージョン0.9.8.6の マニュアル を日語訳したものです。原文のニュアンスを忠実に翻訳するよう心がけていますが、意図しない翻訳ミスやドキュメントの不備があるかもしれません。よって、 内容の正確さについて保証することはできません。 2. クイックスタート OMakeを利用するためのクイ

  • GNU make 日本語訳(Coop編) - 変数の利用法

    変数とは変数の値と呼ばれるデータの文字列に取って代わらせるのにmakefile内で定義する名前のことです。明示的に値を要求する事でターゲットや依存関係、コマンドなどのmakefileのさまざまな場所で代用できます。 (別のmakeでは変数はマクロと呼ばれています。) 変数と関数はmakefileのどこにあっても読み込み時に展開されますが、例外として変数定義で`='とした右手(右辺)と、defineディレクティヴを使った変数定義の体(中身)では展開しません。 変数にはファイル名や、コンパイラや実行するプログラムに渡すオプション、ソースを探す対象のディレクトリ、出力ディレクトリ、その他どんなものでも、リストにして入れておき、変数名をその代表として使うことができます。 変数の名前は空白を前後につけず、`:', `#', `='を含まない文字の並びであればどんなものでも構いませんが、英文字と数字

  • GNU make 日本語訳(Coop編) - Makefileの条件分岐部分

    条件分岐(conditional)を使えば変数の値によってmakefileの一部を従うか無視するか分岐させることができます。条件分岐ではある変数を別の変数と比較するか、変数を定数文字列と比較させかします。条件分岐ではmakeがmakefile中に実際に「見る部分」を制御するため、実行時のシェルコマンドを制御するのに条件分岐は使えません。 条件分岐の例 次の条件分岐例では、CC変数が`gcc'の時はmakeにあるライブラリのセットを使い、そうでない場合は別のライブラリセットを使います。この動作はルールに変更を与えるものと変更を与えないものの二つのうちどちらのコマンドを使うかで制御します。つまり、`CC=gcc'をmakeの引数に渡す事がどのコンパイラを使うかという事だけでなくどのライブラリをリンクするかという事をも変更することになります。 libs_for_gcc = -lgnu norma

  • 1