2011-01-31 4 views
0

저는 GNU 과학 라이브러리의 지원을 받아 C++로 코드를 작성하고 있습니다. 내가 제대로 다음 작성하는 난 그냥이 터미널에서 그들을 컴파일하는 순서로 설치했습니다 이제TextMate 및 컴파일 옵션

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

을, 나는 TextMate를 사용자 해요, 난에서 표준 실행 명령을 수정하고 싶습니다 올바른 gsl 옵션으로 내 cpp 파일을 컴파일하기 위해 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 

"프로젝트"메이크로 이동하고 Enter 키를 눌러 + M