TextMate и параметры компиляции - PullRequest
0 голосов
/ 31 января 2011

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

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

Теперь я пользователь TextMate, и я хотел бы изменить стандартную команду Run из пакета 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"])

1 Ответ

1 голос
/ 17 февраля 2011

Это не совсем отвечает на ваш вопрос, но вместо этого может быть более предпочтительным занятием (и, возможно, более рекомендуемым занятием?)

Создайте 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

...