【问题标题】:Compiling C++ with textmate用 textmate 编译 C++
【发布时间】:2011-02-05 09:20:10
【问题描述】:

我在编译包含另一个 cpp 文件的 cpp 时遇到问题 所以我有 Main.cpp Numbers.h 和 Numbers.cpp 似乎 TextMate 只编译了我的 Main.cpp 而不包括其余部分。我尝试使用 xcode,它工作正常..

这是来自 TextMate cmd+R 的错误:

未定义的符号: “Numbers::Numbers(int)”,引用自: _main 在 ccMrD1Eq.o “Numbers::print()”,引用自: _main 在 ccMrD1Eq.o ld:未找到符号 collect2: ld 返回 1 个退出状态

有什么建议吗?

顺便说一句,这里是调用的命令:

#!/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 #{"-include iostream" unless mode[/c\+\+$/].nil?} #{"-framework Cocoa" unless mode[/^obj/].nil?}"
args = [ENV["TM_#{g}"] || g.downcase.gsub("x", "+"), flags + " -x #{lang}", ENV["TM_FILEPATH"]] 

TextMate::Executor.run(args, :version_args => ["--version"], :version_regex => /\A([^\n]*) \(GCC\).*/m)

【问题讨论】:

    标签: textmate textmatebundles


    【解决方案1】:

    TextMate 仅对您当前正在编辑的 .cpp 文件进行简单编译。与 Xcode 或其他完整的开发环境不同,它不会编译项目中的其他源文件或执行链接。

    (在 TextMate 中单击 Bundles > Bundle Editor > Show Bundle Editor,然后在 C 部分中选择 Run,当您“运行”一个 .cpp 文件时,您将确切地看到 TextMate 正在做什么。)

    【讨论】:

      【解决方案2】:

      您可能需要添加额外的命令行参数...

      您可以通过更改变量 TM_CXX_FLAGS 向 g++ 添加其他命令行参数。

      最好的方法可能是为每个项目添加一个变量: http://manual.macromates.com/en/environment_variables#project_dependent_variables

      如果更改是全局性的,您可以将其添加到 TextMate 的静态变量部分 http://manual.macromates.com/en/environment_variables#static_variables

      【讨论】:

        【解决方案3】:

        我没有足够的信息来确定您正在调用的命令。

        如果它是 Xcode.tmbundle Build and Run,那么它正在调用 xcodebuild -- 您应该能够在 Xcode 中重现并修复错误。

        【讨论】:

        • 我附上了上面调用的命令..我不确定如何修复它..它不像 java 或 ruby​​ 中的运行命令那么直观...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 1970-01-01
        相关资源
        最近更新 更多