Jump to content

Каков лучший способ сделать условную компиляцию в зависимости от цели qemu или kos-image ?


Recommended Posts

Добрый день.

Ну например в quemu нет драйвера GPIO. А в описании примера https://support.kaspersky.ru/help/KCE/1.1/ru-RU/gpio_output_example.htm  просто сказано что при сборке и запуске возникает ошибка. Ну для демо-кода это норм. А вот если разработка более сложного проекта то хотелось бы иметь некий способ запуска и эмулятора и аппаратного образа. Первое что приходит на ум - условная компиляция. Однако нужен некий флаг компилятора, ну например -DQEMU.

Может быть уже вводится такой флаг? Или может быть есть более изящный способ?

Link to comment
Share on other sites

Вообще скрипт cross-build.sh это просто небольшая обертка над командами cmake, и сделана для удобства.

Никто не мешает исправить cross-build.sh под себя или использовать команды cmake напрямую.

 

Link to comment
Share on other sites

Цитата

Никто не мешает исправить cross-build.sh под себя или использовать команды cmake напрямую

Спасибо кэп!
Идею можно развить, никто не мешает сделать свою ось, и вообще сейчас это модно делать на Rust, а красивый конфигуратор нарисовать на Qt!

Увы, этот диалог никак не поможет новичкам в трудной ситуации. Мысль вроде "Хотите изучать Kaspersky OS CE? - изучите сначала CMake" не тянет на поддержку.

Link to comment
Share on other sites

Вот как раз диалог позволяет новичкам определится. Вы обозначили что в qemu не реализована GPIO подсистема. Поэтому в документации указано что на RPI4 пример будет работать, а на qemu нет, все вроде логично для демо примера. А если Вы создает сложный проект, то делать копипасту не понимая, как это работает, плохая идея.

И здесь, Вы предлагаете улучшить скрипт cross-build.sh ?

Link to comment
Share on other sites

Здесь я обращаюсь к разработчикам за советом. Совет о том, где лучше/удобнее/правильнее указать требуемые опции компилятора.

Да, я правда считаю что RTFM в любой дискуссии это не совет, не ответ, и вообще не конструктивный способ ведения диалога. Какова бы ни была разница в компетенциях между участниками.

Link to comment
Share on other sites

Здравствуйте!

Такого флага нет. В предстоящем релизе KasperskyOS Community Edition 1.2 добавится возможность сборки с разными целями.
Но что касается Qemu или HW - это можно решить с помощью ifdef. В больших проектах зачастую так и делается.

Спасибо!

Link to comment
Share on other sites

Добрый день!

16 часов назад, Ivan Ponomarev сказал:

Но что касается Qemu или HW - это можно решить с помощью ifdef. В больших проектах зачастую так и делается.

Не могли бы вы привести конкретный пример?

Link to comment
Share on other sites

  • 3 weeks later...

Здравствуйте.

Примеры будт доступны в версии 1.2 в ближайшее время.

Информация о механизме передачи дефайнов в gcc доступна в документации CMake
https://cmake.org/cmake/help/latest/command/add_compile_definitions.html
https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_FLAGS.html

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...