Edit me

You can probably use more IDEs than the three tools presented here.

Xcode

Sublime Text

This is an editor which you can tune for Objective-C development. Debugging in Sublime Text is not really possible though. You can easily get a useful Sublime Text project with:

mulle-sde extension add sublime-text

Useful extensions

Extension Identifier Comment
Alignment wbond.net/sublime_packages/alignment  
All Autocomplete github.com/alienhard/SublimeAllAutoComplete  
AutoFileName github.com/BoundInCode/AutoFileName  
CMake github.com/zyxar/Sublime-CMakeLists  
Diffy    
FindKeyConflicts    
Git    
GitGutter    
Glue    
Go To Definition    
Origami    
QuickGotoAnything    
ReadonlyProtect    
SideBarEnhancements    
SublimeLinter    
SublimeLinter-clang    

Visual Studio Code

vscode is a good fit for mulle-objc, as it is a cross-platform editor. So you can use it on Linux, MacOS and Windows.

Though only an editor right out of the box, you can add a lot of plugins to turn it into an IDE.

mulle-sde extension add mulle-objc/vscode-clang

This adds a default .vscode folder to your project, which will enables build and debug support.

Here is a list of suggested plugins for development, you can install with “Quick Open” or via the marketplace:

Useful extensions

Extension Identifier Comment
C/C++ ms-vscode.cpptools Configure for clang
CMake twxs.cmake Useful when editing cmake files
Code Spell Checker streetsidesoftware.code-spell-checker Catches some misspellings in source code comments, which is nice
Git Lens eamodio.gitlens  
Git History donjayamanne.githistory  
Markdown All in One yzhang.markdown-all-in-one  
Markdown Preview Github Styling bierner.markdown-preview-github-styles  

Debugging

Debugging in the IDE is still lackluster. You may want to try the following extensions, but be braced for disappointment:

CodeLLDB vadimcn.vscode-lldb

The best results I had was with this .vscode/settings.json

{
   // other settings ...
   "lldb.adapterType": "classic",
   // "lldb.executable": "mulle-lldb",
   "lldb.library": "/home/src/srcL/mulle-lldb-90/lib/liblldb.so"
}

It is able to set breakpoints and you can see the stacktrace. But its slow and very crashprone. I still keep on using mulle-lldb on the commandline.

"lldb.adapterType": "bundled" can not work I believe, since it comes bundled with its own lldb-server.so binary. I didn’t come very far with "lldb.adapterType": "native"

Native Debug webfreak.debug

The disadvantage of this solution is, that it uses the “lldb-mi” debugger interface. Some google guys decided, that “lldb-mi” should not be part of llvm anymore.

It has been moved to lldb-mi and is pretty much unmaintained.

To get anything happening with VSCode you should specify the proper “lldb-mi” launch path in the configuration:

{
   "version": "0.2.0",
   "configurations": [
      {
         "type": "lldb-mi",
         "request": "launch",
         "name": "Launch Program",
         "target": "${workspaceRoot}/kitchen/Debug/<my executable>",
         "cwd": "${workspaceRoot}",
         "lldbmipath": "/home/src/srcL/mulle-lldb-90/bin/lldb-mi",
         "valuesFormatting": "parseText"
      }
   ]
}

Next

Hmm

Tags: runtime