2011-01-31 11 views
0

私はGNU科学ライブラリのサポートでC++でコードを書いています。 Iそれらを適切に設置し、ターミナルからそれらをコンパイルするために、私は次のように記述する必要がありました:TextMateとコンパイルオプション

g++ $(gsl-config --cflags) filename.cpp $(gsl-config --libs) 

さて、私はTextMateのユーザーだし、私はから標準のファイル名を指定して実行]コマンドを変更したいです私のcppファイルを正しいgslオプションでコンパイルするには、Cバンドルを使用します。問題はTextMate.Executor関数であり、私はそれを完全に無視しているため、網羅的な参照が見つかりませんでした。ここで

は、私が試してみました何:(?、行うには間違いなくより多くの推奨事をして)

#!/usr/bin/env ruby 

require ENV["TM_SUPPORT_PATH"] + "/lib/tm/executor" 
require ENV["TM_SUPPORT_PATH"] + "/lib/tm/save_current_document" 

mode = ENV["TM_SCOPE"].slice(/.*?\bsource\.((?:obj)?c(\+\+)?)/, 1) 


case mode 
when "c" 
    g = "GCC" 
    env = "C" 
    ext = "c" 
    lang = "c" 
when "c++" 
    g = "GXX" 
    env = "CXX" 
    ext = "cc" 
    lang = "c++" 
when "objc" 
    g = "GCC" 
    env = "OBJC" 
    ext = "m" 
    lang = "objective-c" 
when "objc++" 
    g = "GXX" 
    env = "OBJCXX" 
    ext = "mm" 
    lang = "objective-c++" 
end 

TextMate.save_current_document(ext) 
TextMate::Executor.make_project_master_current_document 

flags = ENV["TM_#{env}_FLAGS"] || "-Wall -include stdio.h $(gsl-config --cflags) " 
args = [ENV["TM_#{g}"] || g.downcase.gsub("x", "+"), flags + " -x #{lang}", ENV["TM_FILEPATH"]+" $(gsl-config --libs)"] 

TextMate::Executor.run(args, :version_args => ["--version"]) 

答えて

1

これは非常にあなたの質問に答えていないが、代わりに行うことがより好ましいものになるかもしれません

コード用のMakefileを作成します。ここでは鉱山の機能縮小版です:あなたの中に今

CC = g++ 
CFLAGS = -g -Wall -L/opt/local/lib -I/opt/local/include -I$(SRC_DIR) 
GSLFLAGS = -lgsl -lgslcblas -lm -I/opt/local/include/gsl 
EXEC = mRVM 
SRC_DIR = ./src 
OUTPUT_DIR = ./bin 

all: $(EXEC) 

clean: 
    -rm $(OUTPUT_DIR)/test 
    -rm $(OUTPUT_DIR)/*.exe 

$(EXEC): 
    $(CC) $(CFLAGS) $(GSLFLAGS) -o $(OUTPUT_DIR)/$(EXEC) $(SRC_DIR)/main.cc 

"プロジェクト" のMakefileに移動し、押しが + M

関連する問題