Я использую дистрибутив 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