Pull to refresh

Comments 29

Интересует как подрубить эту радость в MacOSX для Cocoa Framework (MacDev) и iOs. У меня сейчас сделано вот так:
"options": [ "-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/", "-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1", "-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/", "-isystem", "/usr/include", "-isystem", "/usr/include/c++/*", "-Wall" ]

Но подсказки оставляют желать лучшего, а писать Obj-C код без подсказок (обьемистый, зараза)… приходится все писать в XCode.
Однако, среди комментариев мне лично ни разу не встречалось упоминаний о плагине SublimeClang, который кардинально меняет работу C++ программиста в этом редакторе


Я где-то в комментариях писал, как превращал его в IDE для STM32
С дебагом, кстати :)
Clang не умеет майкрософтовский код разбирать, особенно atl и mfc. К виму он (clang) кстати тоже легко прикручивается.
Имхо для плюсов (да ещё и в связке с CMake) гораздо удобнее QtCreator. Да это IDE но не слишком монструозная, зато никаких танцев с установкой и настройкой.
UFO just landed and posted this here
Фатальный недостаток это завязка на clang. На линуксе всё ещё главенствует gcc, на windows vc, так что принимяемость стремиться к 0. Конечно, это не недостаток плагина, а, скорее, архитектуры gcc.
Я не вижу никакой сложности скомпилировать clang.
Я вижу падение производительности, а это сложность. Плюс надо пересобирать кучу библиотек тоже clang'ом. Eclipse и так автодополняет вполне сносно.
Зачем пересобирать библиотеки? Вы же используете clang для автодополнения, а для компиляции — хоть borland c++ 3.0.

Кроме того, библиотеки, собранные clang и gcc совместимы по ABI.
Ну в том и дело, что анализирует один компилятор, а компилит другой. И в этом есть нюансы, особенно в c+11, который поразному везде доделан пока.

Если статичски линковать, то там даже разные версии gcc уже не подойдут.
C++11 в Clang 3.2 и gcc 4.7 доделан так, что вам нужно быть в комитете по стандартизации C++, чтобы заметить разницу.

Про статическую линковку — не знаю о такой проблеме. Во-первых, сегодня никто не линкует статически, а во-вторых, какая проблема возникает?
Попробовал часть проектов собрать clang' ом. Сразу же напоролся:

struct A {
int a;
A(int _a=5): A{_a} {};
};

int main() {}

gcc47 — компилит без вопросов, clang32:

1.cpp:5:20: error: expected member name or ';' after declaration specifiers
A(int _a=5): A{_a} {};
^
1.cpp:5:15: error: expected '('
A(int _a=5): A{_a} {};
^
1.cpp:5:18: error: expected ';' after expression
A(int _a=5): A{_a} {};
^
;
1.cpp:5:16: warning: expression result unused [-Wunused-value]
A(int _a=5): A{_a} {};
^~
1 warning and 3 errors generated.

И это не абы какие завороты c++11
Вы забыли -std=c++11

$ clang -std=c++11 /tmp/zzz.cc
/tmp/zzz.cc:3:14: error: constructor for 'A' creates a delegation cycle [-Wdelegating-ctor-cycles]
A(int _a=5): A{_a} {};
^
1 error generated.
Эти нюансы позволяют писать менее компиляторозависимый код. В нормальном коде их вообще не должно быть.
С++ это не только язык, но и ещё и STL. И там есть нюансы gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x про clang не нашёл, но это: clang.llvm.org/cxx_status.html говорит о том, что там не всё 100% тоже.

Плюс ещё всякие расширения типа openmp о которых clang вообще не слышал. Это, конечно, наверное никому кроме меня не нужно, но всё же.
Вы внимательно почитайте, напротив чего стоит No в clang.llvm.org/cxx_status.html По-моему этого вообще нигде нет.

Про STL — во-первых, не STL, а стандартная библиотека, а во-вторых, в Linux вы получите по умолчанию одинаковую стандартную библиотеку и в gcc, и в Clang (GNU libstdc++), а на Mac OS X получите libc++, в которой всё есть.
llvm есть в любом дистрибутиве из коробки, clang ставится ровно одним пакетом, что сложного то? Собрать llvm+clang на винде дело 10 минут.
В дебиане например старая версия clang, приходится из исходников 3.2 ставить.
Дебиан вообще для разработки немного глупо использовать, он слишком старый.
Да ладно, testing/sid в самый раз.
Пока нету, но можно и собрать вручную. В винде ставится одним пакетом, в линуксе собирается за 10 минут… на 32 ядрах…
Зря вы так, если целевая платформа — Дебиан (а у нас например так), то будет глупо разрабатывать под виндой, или в Убунту\Генту, где на стабильных версиях дистрибутива glibc новее версий на 5, чем в тестовом дебиане.
Не было упоминаний лишь потому, что установка и настройка плагина настолько тривиальна, что у разработчика C/C++ не должно возникнуть никаких вопросов.

После установки плагина выскакивает сообщение о необходимости сборки clang из исходников. А дальше cmake вам в руки.
Вы так говорите, как будто собрать clang сложно. Да даже ядро собрать сложнее — там настроек много.
«Тривиально» означает очень просто, без каких-либо усилий. Перечитайте коммент внимательнее, пожалуйста.
Странно и неприятно видеть, что он даже не готов воспринять директорию из проекта как include директорию.

Кроме того, у меня стабильно крешился при добавлении root директории проекта в include dirs. Может, к большим проектам он таки не готов.
Только собрался почитать вашу статью, как вышла бета Sublime Text 3 со встроенной поддержкой навигации по проекту. :) Работает отлично!
Sign up to leave a comment.

Articles