タグ

makeに関するiwwのブックマーク (53)

  • makefileにhelpを付けるワンライナー - podhmo's diary

    makeファイルはデフォルトではhelpが存在しない。bashの補完の設定などを入れているとタブで利用可能なタスクの一覧が出る環境もあるが、その設定もしていない場合には利用可能なタスクの一覧も表示できない。 タスクに対するcommentの流派 似たようなことを考える人はいるもので、helpというタスク(ターゲット)を定義してhelpメッセージを表示しようという試みをしている人たちがいる。 ちょっとだけ検索してみた所以下の2つの流派があるみたい。 <task>: ## <comment> 派 https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html (和訳) https://qiita.com/po3rin/items/7875ef9db5ca994ff762 https://gist.github.com/prwh

    makefileにhelpを付けるワンライナー - podhmo's diary
    iww
    iww 2024/02/28
    ##を区切り文字にするやつ。 あまりにも似たのが多すぎて絶対元ネタあるだろと思ってたやつ
  • How can I remove compiled kernel?

    iww
    iww 2021/08/17
    アンインストールは手で頑張って残さず消せ という話
  • What is the logic of using $($(nproc) + 1) in make command?

    iww
    iww 2021/08/17
    makeで指定する並列処理数の話。VM上で作業してんなら nprocコマンドで得られるCPU数なんか見ないで -j2 とか -j3 に決め打ちした方がいいよ、という意見
  • make Makefileで階層(サブディレクトリ)を走破しながら依存を解決してコンパイルする - わたしの開発日記

    iww
    iww 2019/04/15
  • 技術/Linux/"make mrproper" の "mrproper" って何のこと? - Glamenv-Septzen.net

    ホーム 検索 - ログイン | |  ヘルプ 技術/Linux/"make mrproper" の "mrproper" って何のこと? [ Prev ] [ Next ] [ 技術 ] Linux KernelのMakefileターゲットで、 make clean はオブジェクトファイルを削除、 make mrproper だと設定ファイル関連も全て削除、という二つがあります。 で、"clean"は分かるが "mrproper" って何のこと?と前からうっすら気になってましたが、この度めでたく判明しました。 Linuxカーネルのコンフィグレーション手順- @IT自分戦略研究所 http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill05/lpicdrill02.html より: トーバルス氏が、欧州で知られているMr.Properというク

  • CLionの良くある質問と答え | Post Blog

    IDEs AppCode CLion DataGrip DataSpell Fleet GoLand IntelliJ IDEA PhpStorm PyCharm RustRover Rider RubyMine WebStorm Plugins & Services Big Data Tools Code With Me Quality Assurance JetBrains Platform Scala Toolbox App Writerside Team Tools Datalore Space TeamCity Upsource YouTrack Hub Qodana .NET & Visual Studio .NET Tools ReSharper C++ Languages & Frameworks Kotlin Ktor MPS Amper Education & Rese

    CLionの良くある質問と答え | Post Blog
    iww
    iww 2017/11/27
    『Q: CLionを使う上でCMakeを使わなければなりませんか? A: はい。CLionは現在のところCMakeベースのプロジェクトのみサポートしています』 おいおいおいおい先に言ってくれよ大事なとこだろそこ!
  • Makefileの書き方に関する備忘録 その3 - minus9d's diary

    この記事は続き記事です。目次→Makefileの書き方に関する備忘録 - minus9dの日記 変数に何を入れるか .cから.oへのコンパイルには以下の暗黙的なルールが使われる。 $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@.ccから.oへのコンパイルには以下の暗黙的なルールが使われる。 $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@これらの変数には、以下のルールに従って値を入れるのがよさそう。 $(CC): Cのコンパイラを指定。cc, gcc, armcc(ARM用のコンパイラ)など $(CXX): C++のコンパイラを指定。g++など $(CPPFLAGS): C/C++共通で指定したいフラグを入れる。-I/usr/include, -O2など $(CFLAGS):

    Makefileの書き方に関する備忘録 その3 - minus9d's diary
    iww
    iww 2017/08/22
    $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LOADLIBES) $(LDLIBS) -o $@
  • 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 日本語訳(Coop編) - 暗黙ルールの利用

    標準的なターゲットファイル更新の手法の中にはかなり頻繁に使うものもあります。例えば、オブジェクトファイルを作成するにはccというCコンパイラを使ってCソースファイルから作るという方法が習慣的なものの一つです。 習慣的な技術の利用方法をわざわざ詳細に指定しなくてもいいようにmakeに伝えてくれるものが暗黙のルールです。例えばCコンパイル作業に働く暗黙のルールがあります。ファイル名でどの暗黙ルールが実行されるのかが決定されるのです。例えばCのコンパイル作業では典型的に`.c'ファイルを受け取り`.o'ファイルを作成します。だからこの二つで終わるファイル名の組を見つけるとmakeはCコンパイルを行う暗黙ルールを適用します。 暗黙ルールの連鎖が次々に適用されることもあります。例えば`.o'ファイルを更新するのに`.y'ファイルを使う場合それを`.c'のつもりで更新します。 これについては暗黙ルール

    iww
    iww 2017/08/17
    暗黙のルール、変数の初期値
  • Why is "$_" not expanded as expected by GNU make shell function?

    iww
    iww 2017/08/02
    makeの中で perlのワンライナーを書いたりすると、perlで使う変数が全部bash側で先に置換されてしまって まともに動かなくなる。
  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
  • O'Reilly Japan - GNU Make 第3版

    GNU Make 第3版 Robert Mecklenburg 著、矢吹 道郎 監訳、菊池 彰 訳 2005年12月 発行 304ページ ISBN4-87311-269-9 フォーマット Print 原書: Managing Projects with GNU Make, Third Edition

    O'Reilly Japan - GNU Make 第3版
    iww
    iww 2017/07/20
    本全部PDF。 読みにくいから物理本買うか
  • Makefile 別ディレクトリに中間ファイル & 自動依存関係設定

    普段、自分でMakefileを書くことはほとんど無い。あったとしても、ちょっとしたプログラムでソースファイルとして数個のCソースがあるようなもの。なので、Makefileの知識は、ターゲットと依存関係を : で区切って書くとか、変数が使えて、その参照は$(~)でやるとか、そういうぐらいしかなかった。 ところが、ある程度の規模があるプログラムを作成することになり、ちょっと自分流Makefileというものを、ちゃんと作っておこうと思い立つ。一回作っておけば、使いまわしできるからね。 こんなことができれば・・・・という自分の要求は、以下のとおり。 中間ファイル(オブジェクトファイル)は、ソースとは別のディレクトリに吐き出させたい。ただし、ここで、元となるソースは複数のディレクトリ内に散在している。 ソースからインクルードしているヘッダなどの依存関係も、ちゃんとなんとかしてほしい ビルドは、最速で

    Makefile 別ディレクトリに中間ファイル & 自動依存関係設定
    iww
    iww 2017/07/20
    allに書く
  • make の ifdef はわかりにくい

    シェルにおいて $ FOO= とすると、シェル変数 FOO は空ではあるが、定義はされている。 変数 FOO を未定義にするには $ unset FOO としなければならない。 つまり、シェルスクリプトで、「変数が空」であることと、「変数が未定義」であることは明確に違う。 一方、make においてはこのあたりが紛らわしいというか、非常にわかりにくいと思うので、整理しておきたい。 make には ifdef という構文があるが、これの挙動を見てみる。 (実験1) 以下の内容の Makefile を用意する。 FOO= all: ifdef @echo FOO is defined. else @echo FOO is NOT defined. endif 実行すると以下のようになる。 $ make FOO is NOT defined. FOO= のように、空文字を代入した場合、 ifdef

    iww
    iww 2017/07/19
    覚えておこう
  • 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でも依存関係ファイルを作成してしまう不具合の解説。 回避策はとくになし
  • 第 4 章 make ユーティリティ > 依存関係の検査 : make とシェルスクリプト

    依存関係の検査 : make とシェルスクリプト 単純な処理の場合には、ソフトウェアの構築にシェルスクリプトを使用して整合性を保つことができますが、ソフトウェアプロジェクトの構築では多くの場合スクリプトは適していません。プログラムまたはオブジェクトモジュールのうちの 1 つだけが変更されている場合に、単純なスクリプトを使用してすべてのプログラムまたはオブジェクトモジュールをコンパイルするのは効率がよくありません。また、スクリプトを繰り返し編集しているうちに、整合性を保つことができない場合があります。再コンパイルが必要なモジュールだけを再コンパイルするスクリプトを記述することはできますが、それには make を使用する方が適しています。 make を使用すると、構築するファイルとその構築方法を簡潔かつ構造的に記述することができます。make は、依存関係の検査という仕組みを使用して、各モジュ

  • Makefileでソース、ヘッダファイルの依存関係を処理 - 余白の書きなぐり

    大規模なC言語プログラムでは、ソースやヘッダファイルが複雑な依存関係を持つため、それらを自動解決してくれるMakefileが欲しくなる。 欲望を具体化すると ソース、ヘッダ、オブジェクトファイルは異なるディレクトリに入れたい 依存関係を認識し、更新すべきオブジェクトファイルを自動検出 新しいソース、ヘッダファイルを作成した際、Makefileを書き換ずに済む 他のプロジェクトにも使いまわせる汎用性 Makefile自体が短く、保守しやすい だいぶ贅沢だが、頑張ってMakefileをこしらえたので、得られた知見を忘れないうちにまとめておく。 以前書いたMakefile文法ミニマムも参考にしてくれ。 ディレクトリ構成 root +----src/ | +---- main.c # mA.h を読み込む | +---- A.c # mA.h と A.h を読み込む | +----inc/ | +

    Makefileでソース、ヘッダファイルの依存関係を処理 - 余白の書きなぐり
  • Makefile での .PHONY と FORCE の違い

    [以前](/2012/02/linuxmakefile-4.html)、 `.PHONY:` 指定と `: FORCE` 指定について触れたことがあるのですが、 明らかに両者を使い分けるべきケースがあることに最近気がついた。 まずは、 make の初歩ですが、 PHONY ターゲットからおさらいします。 次のような `clean` ターゲットがあったとする。 clean: $(RM) $(programs) $(objects) もし、カレントディレクトリにたまたま `clean` という名前のファイルが存在すると、 この `clean` は実行してくれません。 $ touch clean $ make clean make: `clean' is up to date. そこで、 .PHONY: clean clean: $(RM) $(programs) $(objects) としてお

  • Makefileの書き方スピード再入門 【追記あり】 - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20090929.html

    Makefileの書き方スピード再入門 【追記あり】 - フリーフォーム フリークアウト
    iww
    iww 2017/07/06
    phonyターゲット はいつも存在を忘れる。 基本的にcleanなんて名前のファイルを作ることは無いから気にしなくていい気がする