• 締切済み

make debug で DEBUGをtrue にするには

$ make debug する時だけ  自己定義したDEBUG変数"$(DEBUG)"をtrue にするには Makefile でどのように記述したらよいのでしょう? 比較的大規模なソースのmake を debugで行いたいのですが、 all と違ってサブのMakefileが中途半端に作られているため、 debugのライブラリが読み込めません。 (パス設定自体が、debug用にはされていないものが一部存在) 大規模なプロジェクト群のMakefileを私ではすべて書き換え切れないため、 変数DEBUGを定義してピンポイントで追加パス(debug用)を 自分で書き込みたいのですが (release と debugで、サブのライブラリがコピーされる ディレクトリが異なり、メインに近いプロジェクトのメイクファイル では、リリース用のパス記述群しかないため) DEBUG= ... debug:: <TAB>DEBUG=true のようにしたいのですが、 (make debugの時だけ、DEBUG=trueにしたいのです) 上記の条件分岐?を Makefileで記述するには どうしたらよいのでしょう? (コマンド記述で変数に代入できないようですし...)

みんなの回答

noname#136147
noname#136147
回答No.1

なにをやりたいのか、いまいち見えてこないのですが、 例えば、 ====== Makefile ====== all:   echo $(DEBUG)   echo "all" debug:   echo $(DEBUG)   echo "debug" ====================== というMakefileを作って、 $ make debug DEBUG=true とすると、debugの所のDEBUG変数に値(true)を代入出来るのですが、 こんなやり方はまずいのでしょうか? $ make DEBUG=true とすると、allのところでDEBUG変数に値(true)を代入出来ます。

関連するQ&A

  • Makeについての質問

    こんにちは、Makotoと申します。 AIX上でCの開発を行っているのですが、 各ディレクトリにMakeFileがあり、 コンパイルのたびに各ディレクトリに移動して Makeを行っているのですが、面倒になってきたので、 以下のような簡単なシェルを作成しました。 cd /目的のディレクトリ make depend make clean make 上記と同じ記述が続く.... 始めの内は、規模が小さかったのでよかったのですが、 新しいプログラムが増えるたびに、同じ記述をするのも あまりきれいではないのでMakeFileを検出して Makeを実行させるといったことはできるのでしょうか?

  • QtでMakeがうまくいかない

    Qtの本を買ったので勉強しようと思い、サンプルを作ってみたのですがMakeがうまくいきません。 エラーメッセージを見る限りはリンカがおかしいみたいなのですが… 状況と環境を記載しますので問題点があればどなたかご教授お願いいたします。 なお、情報が足りなければ随時出していきますので何卒お願いいたします 【環境】 OS:Ubuntu7.04 ライブラリ:qt-x11-free3.2.1 コンパイラ:gcc(バージョンが沢山出てわかりませんが最新は4.1のよう) 【手順(インストール~Make)】 (1)tar.gzだったライブラリを/usr/localに展開 (2)環境設定のために「.profile」に以下を追加  QTDIR=/usr/local/qt-x11-free3.2.1  PATH=$QTDIR/bin:$PATH  MANPATH=$QTDIR/doc/man:$MANPATH  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  export QTDIR PATH MANPATH LD_LIBRARY_PATH  ※設定後LD_LIBRARY_PATHだけechoでも確認できませんでした (3)ライブラリのMakeのためにqt-x11-free3.2.1ディレクトリ内の「configure」を実行 (4)適当に空のディレクトリにサンプルを作る。 (5)コマンド「qmake -project」を実行 (6)コマンド「qmake」を実行 (7)(6)によって作成されたMakeFileを実行 【状況】 コンパイルでエラーとなり以下が出力されます。 /usr/bin/ld: cannot find -lqt collect2: ldはステータス1で終了しました。 make: ***[Qt]エラー1

  • Windowsのmakeについて特にpython

    ソースプログラムを実行するための環境を作るmakeについてお尋ねします。Linuxなどでは、OSをインストールした時点で1つ有効なmakeがg++, gcc等で使用することを目指して利用できるようになっていると思います。アプリのインストールでさえmakeですね(./configure, make cleanとかの定型処理)。Windowsだとmakeを提供する元がいっぱいあってプロンプトでwhere make とすると4つぐらい出てきます。そこで質問なのですが、makeという操作は提供元によって全然文法その他の仕様が違うものなのでしょうか。つまり、一般性が高いmakefileというものあるのか?という質問にもなりますが。コマンドプロンプトでmakeをやるとpathの最初に出てくるmakeが呼ばれるようです。Windowsのmakeは一般論では何も言えないでしょうか。大昔,マイクロソフトはnmakeで名前を変えて唯一のものとして確定していたようですが。 さらにpython3.6についてお尋ねしたいと思います。あるプログラムのソースをダウンロードして、広げてみるとソースファイル軍とmakefileがあり、makefileの冒頭に、 ## The present Makefile is a pure configuration file, in which ## you can select compilation options. Compilation dependencies ## are managed automatically through the Python library SConstruct. 上記はmakeの一般論のあとPythonでもライブラリがあれば使えるという風に読める記述があります。そもそもPythonってインタプリターとかソースにpythonコマンドで利用するということであり、実行ファイルは作らないものだと思っていたのでどういうことだろうと思うのですが。makefileをmakeで呼び出して利用するにしてもどのmake.exeでもいいってことではないと思うのですが。pythonで使用するmakefileということですが。 よろしくお願いします。

  • eclipseのCDTでCを書いていますがエラーです

     今晩はCの初心者です、宜しくお願いします。  eclipseのCDTでCを書いています。  PATHも設定して、JAVAはコンパイルするのですが、Cだけは下のようなエラーが出てうまくコンパイルできません。  一体何が原因でしょう。   ============================================================ **** Full rebuild of configuration Debug for project try1 **** make -k clean all make: makefile 5: bad delimiter: '=' Build complete for project try1 =============================================================

  • メイクファイルからdllを生成するには

    環境はWindowsXP SP3 VisualStudio2008です。 メイクファイルからdllを生成するには dllとlib形式で用いるフリーのライブラリがありまして、 Windows用バイナリとソースが提供されています。 Windows用バイナリの方がリリースが遅いので、 最新のソースの方でdllとlibを生成しようと考えました。 しかし、中身を見ると、 C言語用の「.c」「.h」ファイル以外に以下のファイルが含まれており、 これは何なのかと疑問を持ちました。 aclocal.m4 config.guess config.sub configure configure.in depcomp INSTALL install-sh ltmain.sh Makefile.am Makefile.in missing 調べたところメイクファイルというものだと分かったのですが、 これを用いてどうやってdllを生成すればよいのでしょうか。 参考として、このライブラリの提供サイトを記載しておきます。 http://libharu.org/wiki/Downloads

  • make実行時のエラーについて

    makeについてお尋ねします(先日、お尋ねした件の延長なのですが)。 あるプログラムソース群からの実行ファイルの作成に関する質問です。 以下操作手順です。 ------------ 1. configure.sh というのが用意されていて、中を見てみたら私の計算機のコンパイラの状況などを調べたりして、make.incを出力しています。それは所定の場所に置かれます。これをマニュアルどおり実行しました。 2. その場所(ソース群とかmakefile,make.incがあるフォルダ)でmakeを実行しました。makeはmakefile, make.incを読み込んでいます。make.incがmakefileから呼ばれている記述も確認しました。 makeを実行すると、makefileの以下の部分がおかしいとしてmakeが終了します。 c.o: $(CC) -c $(CFLAGS) $(INCS) $*.c メッセージとして、 cc -c -I hoge.c cc: fetal error: no input files ----------- $(CC),$(CFLAGS),$(INCS) というのはcc, スペース, -I を意味するようですが、これはどこで指定されるのでしょうか。 make.incの中にはそのようなものを指定するところはありませんでした。Fortranコンパイラは調べて調整されていることが分かり、"FC= gfortran -O3" というような記述が見えます。configure.shを使って調査したことが分かります。 また、cc -c -I abc.c は、-Iでインクルードファイルのフルパスを指定なのでしょうか。man ccによるとそういう風です。 $(INCS)を削除すればいいのかもですが、一応、セットとして導入されているものなので、どこで副作用が出るかわからないのでそのままにしているのですが。理屈が分からないので、自発的に編集することをためらっています。 make全般ですが、どういう分野に属するのでしょうか。C言語の1分野でもなく、必ずしもLinuxの習得の中に組み込まれているわけでもないように見えます。学習するシステムとしてどこに属するのかということですが。その場その場でアドホックに調べて習得していくものなのでしょうか。 if......fiというようにフィーリングではわかるのですが、しっかり説明されるような学習の場面がないのですが。

  • VC++のプロジェクトをUnixで実行できるようにしたい

    最近,C++の勉強を始めた素人です。 現在,Visual C++ 2008を使用しプログラムを組んでいます。 そのため,コンパイル等はビルドを実行するだけで簡単なのですが,実行の効率化のため作成したプロジェクトをUnix環境でも実行したいです。 そのためには、makefileを作成して,Unix環境でmakeすればよいと思うのですが,人から譲り受けたプログラムに組み込んで作成しているため、ファイルの数が大規模で、ライブラリなどもありmakefileをどう作ったらいいか分かりません。 素人にもわかりやすい、できるだけ簡単に、VC++のプロジェクトからUnix環境で実行できるmakefileを作成する方法はないのでしょうか? 回答よろしくお願いします。

  • MakefileのLDLIBSとLOADLIBESの違いについて

    どうもこんにちは 趣味でプログラムを作っています。 make コマンドを使ってコンパイルしているのですが、Makefile のマクロ(変数?)でちょっとわからないものがあります。 最初から用意されているマクロで、LDLIBSとLOADLIBESというものがありますが、これらはどのように使用するのでしょうか? webで調べてみると、リンクするライブラリのパスを指定するマクロのようですが、両者の違いがよくわかりません。 どちらかを適当に選んで使えばいいのでしょうか? それとも、まったくの別物でしょうか?

  • MFCでアプリケーションを開発しています(Windows7 ,Visu

    MFCでアプリケーションを開発しています(Windows7 ,Visual Studio 2008 SP1)。 今MFCアプリでプロジェクトの設定で4種類あります(Debug/ReleaseかつWin32、x64) これらの実行ファイルのアイコンをそれぞれ別々にしたいと思っています。 Debug/Releaseの二つの場合はリソースにてプリプロセッサ定義で_DEBUG設定でアイコンをわけることができました。 しかしプラットフォームでx64を追加して、4つになったので、たとえばWIN64やDEBUG64などのプリプロセッサ定義したのですが、うまくいきません。 このような場合どのように設定すればそれぞれのプロジェクト設定で、アイコンを設定することができるのでしょうか?

  • メイクするとエラーが出る。

    エンバカデロCode Gear C++ Builder 2009を使用しています。 ComPort Libraryをインストールしたく、  http://sourceforge.net/projects/comport/ このサイトからファイルをダウンロードして、 http://shinta0806be.ldblog.jp/archives/6944274.html このサイトを参考にインストール作業をしてみたのですが、メイクする際に1つのエラーがでてしまいました。 DsgnCPortCB6.bpkをC++ Builder 2009で開いて、プロジェクトをアップグレード後、メイクすると次のようなエラーがでました。 (エラー内容) リリース をメイク [ILINK32 エラー] Fatal: ファイル 'CPORTLIBCB6.BPI' を開けません 解決方法ご存じの方いらっしゃいましたら、教えて頂けませんでしょうか?