Как писать на Objective-C в Linux (с использованиям системы сборки CMake и автодополнением)

от автора

Я использую дистрибутив Ubuntu 20.04.3 LTS и Ubuntu 18.04 LTS

Установка нужных пакетов и компиляторов

Будем использовать компилятор clang. Можно и gcc, но не все фичи будут работать(например блоки).

sudo apt-get install \ build-essential \ gobjc gobjc++ \ gnustep gnustep-devel \ libgnustep-base-dev \ clang gcc cmake git \ libblocksruntime-dev vim \ python3-dev -y

Инициализация проекта

Создаем файл CMakeLists.txt

# CMakeLists.txt  set(CMAKE_EXPORT_COMPILE_COMMANDS 1)  cmake_minimum_required(VERSION 3.0.0) project(HelloWorld) # Имя проекта  SET(CMAKE_C_COMPILER clang) SET(CMAKE_CXX_COMPILER clang++)  add_executable(HelloWorld  # Исходные файлы проекта )  # Библиотеки для подключения target_compile_options(HelloWorld PRIVATE  -MMD  -MP  -DGNUSTEP  -DGNUSTEP_BASE_LIBRARY=1  -DGNU_GUI_LIBRARY=1  -DGNU_RUNTIME=1  -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing  -fexceptions  -fobjc-exceptions  -D_NATIVE_OBJC_EXCEPTIONS  -pthread  -fPIC  -Wall  -DGSWARN  -DGSDIAGNOSE  -Wno-import  -g -fblocks -O2  -fgnu-runtime  -fconstant-string-class=NSConstantString  -I.  # Dirs of GNUstep and libobj -I/home/ani/GNUstep/Library/Headers  -I/usr/local/include/GNUstep  -I/usr/include/GNUstep  -I./libobjc2 )  target_link_libraries(HelloWorld gnustep-base objc BlocksRuntime)  target_include_directories(HelloWorld PRIVATE usr/include/GNUstep/) 

Инициализация Runtime библиотеки для Obj-C

В папку проекта клонируем библиотеку с github’а:

git clone https://github.com/gnustep/libobjc2

Далее билдим её:

cd libobjc2 git submodule init && git submodule update mkdir Build && cd Build cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ make -j8 sudo -E make install

Первый запуск

В папке проекта создаем файл main.m и кидаем в него такой код:

#import <Foundation/Foundation.h>  int main (int argc, const char * argv[]) { @autoreleasepool {  NSLog(@"Hello World");  }   return 0; }

После этого в cmake в строчку add_executable добавляем файл main.m.
Переходим в папку проекта, вводим:

cmake . make ./НазваниеПроекта

Ура. Вы запустили свой первый Obj-C код на Linux

Настройка среды

Я буду использывать текстовый редактор vim.

То, как будет выглядеть автодополнение
Вот пример того как ето должно выглядеть
Вот пример того как ето должно выглядеть

Обновим vim:

sudo add-apt-repository ppa:jonathonf/vim   sudo apt update  sudo apt install vim  

Установим этот конфиг файла .vimrc

Для установки всех плагинов, сначала нужно скачать библиотеку плагинов:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Далее запустить vim и в command mode напичатать: :PlugInstall

После нужно настроить ycm файл YouCompleteMe.
Кидаем этот конфиг в папку ~/.vim/
Нужно скомпилировать библиотеку YouCompleteMe

cd ~/.vim/plugged/youcompleteme python3 install.py --clang-completer

Ребилдим obj-c проект. Готово. Наслаждайтесь

П.С.

При установке библиотеки YouCompleteMe могут быть ошибки версии cmake и g++

Вот ссылки на решения:
https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line
https://stackoverflow.com/questions/65284572/your-c-compiler-does-not-fully-support-c17


ссылка на оригинал статьи https://habr.com/ru/post/656701/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *