2009-05-20 7 views
6

多くの場合、他のプロジェクトと一緒に作業しているとき、ライブラリパスとインクルードパスの量は、コンパイル時にMakefileで取得される時間が増えるほど多くなります。また、道も非常に長くなることがあります。ここでコンパイラの行を短くするにはどうしますか?

は例です:

g++ -c -pipe -O2 -Wall -W -DQT_BOOTSTRAPPED -DQT_MOC -DQT_NO_CODECS 
-DQT_LITE_UNICODE -DQT_NO_LIBRARY -DQT_NO_STL -DQT_NO_COMPRESS 
-DQT_NO_DATASTREAM -DQT_NO_TEXTSTREAM -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES 
-DQT_NO_THREAD -DQT_NO_REGEXP -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE 
-DQT_NO_GEOM_VARIANT -DQT_NO_USING_NAMESPACE -D_LARGEFILE64_SOURCE 
-D_LARGEFILE_SOURCE -I../../../mkspecs/qws/linux-generic-g++ -I. 
-I../../corelib/arch/generic -I../../../include -I. -I../../../include/QtCore 
-I. -I.uic/release-shared -o release-shared/moc.o moc.cpp 

まだユーザーに彼らが本当にその情報が必要な場合は、生の行を表示するオプションを与えている間、私は、あなたがコンパイララインが大幅に短くするために使用するレシピの種類思ったんだけど後で。

これを自動的に行うツールはありますか?

答えて

3

環境変数の使用はどうですか?実際のコマンドとそのパラメータのみがエラーまたは警告に表示されるように

export LONGPATH=/usr/local/projects/include/foo/system/v1 
gcc foo.c -o foo -I$LONGPATH 

より複雑なシナリオの場合、1は、コンパイラを呼び出すためのラッパーを使用することができます。 たとえば、cmakeを使用すると、従来の出力の多くはすでに大幅にダウンストリープされています。

同様に、spec files with gccを使用する可能性があります。

例えば:sconsので

+0

+1 specfilesの場合 –

+0

specファイルを使用する実例はありますか? – florin

1

は、私が長いコマンドを読みやすくするために、私のコマンドジェネレータに改行を挿入します

tool \ 
    -opt1 bar1 \ 
    -opt2 bar2 \ 
    -opt3 bar3 \ 
    -opt4 bar4 

次に、クラッタを減らすためにコマンド文字列を作成するときにローカルメソッドを作成します。

それは主に迷惑を引き起こし「メイク」の間に巨大なラインの舞い立ただ場合、あなたはまた、コンパイラのラインをエコーし​​ないように、あなたのMakefileを変更することができます
cmds = [] 
def l(line,indent=1): 
    cmds.append(indent*' '+line) 
l('tool',0) 
l('-opt1 bar1') 
l('-opt2 bar2') 
l('-opt3 bar3') 
l('-opt4 bar4') 

return '\\\n'.join(cmds) 
4

、代わりにのようなものがあります:

 .cpp.o: 
      @echo $(CC) $< 
      @$(CC) $(FLAGS) -c -o [email protected] $< 

'@'はコマンドラインのエコーを抑制する

7

コンパイラの出力を短くするだけでなく、色分けして冗長フラグを付けることができます。通常かさばるgccのを見て、 "sconsの--verbose" と

import os,sys 
colors = {} 
colors['cyan'] = '\033[96m' 
colors['purple'] = '\033[95m' 
colors['blue'] = '\033[94m' 
colors['green'] = '\033[92m' 
colors['yellow'] = '\033[93m' 
colors['red'] = '\033[91m' 
colors['end'] = '\033[0m' 

#If the output is not a terminal, remove the colors 
if not sys.stdout.isatty(): 
    for key, value in colors.iteritems(): 
     colors[key] = '' 

compile_source_message = '%s\nCompiling %s==> %s$SOURCE%s' % \ 
    (colors['blue'], colors['purple'], colors['yellow'], colors['end']) 

compile_shared_source_message = '%s\nCompiling shared %s==> %s$SOURCE%s' % \ 
    (colors['blue'], colors['purple'], colors['yellow'], colors['end']) 

link_program_message = '%s\nLinking Program %s==> %s$TARGET%s' % \ 
    (colors['red'], colors['purple'], colors['yellow'], colors['end']) 

link_library_message = '%s\nLinking Static Library %s==> %s$TARGET%s' % \ 
    (colors['red'], colors['purple'], colors['yellow'], colors['end']) 

ranlib_library_message = '%s\nRanlib Library %s==> %s$TARGET%s' % \ 
    (colors['red'], colors['purple'], colors['yellow'], colors['end']) 

link_shared_library_message = '%s\nLinking Shared Library %s==> %s$TARGET%s' % \ 
    (colors['red'], colors['purple'], colors['yellow'], colors['end']) 

java_compile_source_message = '%s\nCompiling %s==> %s$SOURCE%s' % \ 
    (colors['blue'], colors['purple'], colors['yellow'], colors['end']) 

java_library_message = '%s\nCreating Java Archive %s==> %s$TARGET%s' % \ 
    (colors['red'], colors['purple'], colors['yellow'], colors['end']) 

env = Environment() 
AddOption("--verbose",action="store_true", dest="verbose_flag",default=False,help="verbose output") 
if not GetOption("verbose_flag"): 
    env["CXXCOMSTR"] = compile_source_message, 
    env["CCCOMSTR"] = compile_source_message, 
    env["SHCCCOMSTR"] = compile_shared_source_message, 
    env["SHCXXCOMSTR"] = compile_shared_source_message, 
    env["ARCOMSTR"] = link_library_message, 
    env["RANLIBCOMSTR"] = ranlib_library_message, 
    env["SHLINKCOMSTR"] = link_shared_library_message, 
    env["LINKCOMSTR"] = link_program_message, 
    env["JARCOMSTR"] = java_library_message, 
    env["JAVACCOMSTR"] = java_compile_source_message, 

コンパイル:

ここalt text http://img526.imageshack.us/img526/9572/sconsf.png

がどのように(SConsはウィキから盗まれたカラーテーマ)です。出力は次のようになります。出力。

関連する問題