【问题标题】:Sublime Text 2 Issue with BoostBoost 的 Sublime Text 2 问题
【发布时间】:2013-03-15 17:19:59
【问题描述】:

我有一个构建系统配置为使用 boost(v1.53,Mac OS X Mountain Lion)构建项目

{
    "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-I/usr/local/include -L/usr/local/lib -lboost_system"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
        }
    ]
}

但是,当我尝试用一​​个简单的程序对其进行测试时:

#include <iostream>
#include <boost/asio.hpp>

int main(){
    std::cout << "Hello world! - boost" << std::endl;
    return 0;
};

我收到以下错误(来自 sublime text 2 输出):

Undefined symbols for architecture x86_64:
  "boost::system::system_category()", referenced from:
      __static_initialization_and_destruction_0(int, int)in cct7f9yj.o
      boost::asio::error::get_system_category()    in cct7f9yj.o
  "boost::system::generic_category()", referenced from:
      __static_initialization_and_destruction_0(int, int)in cct7f9yj.o
ld: symbol(s) not found for architecture x86_64
collect2: [Finished in 1.1s with exit code 1]ld returned 1 exit status

控制台输出为:

Running g++ /Users/xxxx/Desktop/event_system/main.cpp -o /Users/xxxx/Desktop/event_system/main -I/usr/local/include -L/usr/local/lib -lboost_system

当我将相同的命令复制并粘贴到终端时,它可以正常工作。这只是 Sublime Text 2 无法正确使用 g++ 的问题吗?还是有其他问题。

【问题讨论】:

  • 你能不能试着把这个论点分成三个:“-I/usr/local/include -L/usr/local/lib -lboost_system”?
  • 解决了,谢谢!

标签: c++ g++ sublimetext2 build-system


【解决方案1】:

在 Sublime Text 2 构建系统中,命令的每个参数都应该是数组 cmd 中的单个项目。如果您在一项中指定三个参数,它们将仅作为一个参数传递。以如下设置为例,python脚本只会接收一个参数,其值为"arg1 arg2 arg3"

{
    "cmd"       : ["python", "${file_path}/${file_base_name}.py", "arg1 arg2 arg3"],
    "selector"  : "source.py",
    "working_dir": "${file_path}"
}

因此,在您的构建系统中,"-I/usr/local/include -L/usr/local/lib -lboost_system" 将被视为一个参数,也就是说,g++ 不知道您指定了两个链接选项。

【讨论】:

  • 对于运行,这似乎不是以同样的方式工作。我试过把论点分开,也把它们分开
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多