Делаю проект с компиляцией под несколько платформ на c++
. Некоторые файлы нужно прогнать утилитой (для простоты понимания скажем, что это транспилятор). Этот транспилятор нужно собрать из исходников, для него уже настроен CMakeLists.txt
.
Подключаю его так:
add_subdirectory(my/transpilator)
Ну и добавляю таргет:
add_custom_target(transpile ALL COMMAND ${CMAKE_COMMAND} -D...
-DTRANSPILER_EXECUTABLE=$<TARGET_FILE:my_transpiler> -P transpile_all.cmake)
Подключаю его как зависимость к главному таргету и при сборке transpile_all.cmake
транспилирует нужные файлы.
Проблема же возникает на платформах вроде Android
или IOS
. Так как для них нужно настраивать специфическое окружение, флаги компилятора, архитектуру и прочее, очевидно, что при подключении проекта транспилятора через add_subdirectory
он унаследует все эти настройки. Окружение же настраивается тулчейном и добавить add_subdirectory
перед настройкой окружения я не могу.
На данный момент думаю использовать "костыльное" решение - запускать cmake
для транспилятора во время конфигурации и компилировать его. Что-то вроде:
execute_process(COMMAND ${CMAKE_COMMAND} -Htranspiler/folder -Btranspiler/output)
execute_process(COMMAND ${CMAKE_COMMAND} --build transpiler/folder ...)
Потом там экспортировать какую-нибудь переменную окружения и читать из нее путь до бинарника, чтобы передать в transpile_all.cmake
.
В правильном ли я направлении думаю, или же есть какой-то способ, скажем, сделать add_subdirectory
, но без наследования настроек окружения, или что-то подобное?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть геймпад Aceline CG-1 на USB, который нужно подключить по Serial к Arduino NanoКак можно отслеживать нажатия кнопок (т
Требуется реализовать поиск подстроки в строке с использованием Z-функции
Есть ли в этих записях различия? Выводят они одно и то же значениеНо может различие где-то глубже? А также в таком случае:
Какие аргументы использует метод drawImage()? Знаю первые 3, но что насчёт четвертого? В API подробной информации не нашел