TextMate и параметры компиляции

Я пишу код на C++ при поддержке научных библиотек GNU. Я правильно их установил, и чтобы скомпилировать их из терминала, мне просто нужно написать следующее:

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

Теперь я пользователь TextMate, и я хотел бы изменить стандартную команду «Выполнить» из пакета C, чтобы скомпилировать мои файлы cpp с правильными параметрами gsl. Проблема заключается в функции 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"])

person Francesco Turci    schedule 31.01.2011    source источник


Ответы (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

person Jason Marcell    schedule 17.02.2011