Возвышенный текст 2 проблема с повышением

У меня есть система сборки, настроенная для сборки проекта с надстройкой (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;
};

Я получаю следующую ошибку (из вывода возвышенного текста 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 ++? Или есть какая-то другая проблема.

0

Решение

В системе сборки 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++ не знает, что вы указали две опции ссылки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector