Подтвердить что ты не робот

Как заставить CMake работать с языком программирования go?

Я использую CMake с С++ для создания библиотек и исполняемых файлов и хотел бы использовать их для языка go.

Какие шаги я должен предпринять для настройки CMake, чтобы он работал с языком программирования go?

По сути, мой компилятор - 6g, который создает скомпилированный foo.6 - я отправляю его в компоновщик через 6l foo.6, и я закончил. У меня уже создан и установлен компилятор и компоновщик.

Очевидно, я могу просто написать простой Makefile для этого, но было бы неплохо использовать CMake последовательно во всем моем проекте.

TIA для любых советов, которые помогут мне начать работу.

4b9b3361

Ответ 1

Возможно, вы захотите реализовать поддержку CMake для Go. Грубо говоря, это включает следующие шаги:

  • Создайте модуль CMakeDetermineGoCompiler.cmake, который найдет Go компилятор для текущей системы.
  • Создать CMakeGoCompiler.cmake.in - a шаблон, который будет настроен CMakeDetermineGoCompiler.

  • Создайте CMakeTestGoCompiler.cmake, модуль, который будет скомпилировать простой источник go, чтобы проверить, работает ли компилятор.

  • Создайте CMakeGoInformation.cmake, который установит некоторые связанные с языком переменные (CMAKE_GO_LINK_EXECUTABLE и т.д.)

Эти вещи должны быть помещены в CMAKE_MODULES_DIR. Для справки вы можете посмотреть, как реализована поддержка Java/CXX.

В качестве альтернативы, если вы не хотите вмешиваться в такие внутренние вещи, вы можете решить свою задачу, создав макрос(), который создаст кучу пользовательских целей/команд (см. документацию add_custom_ {target, command}()).

Ответ 2

В ваших интересах не использовать CMake (или любую другую систему сборки).

Go имеет простой, встроенный способ создания пакетов: go build (что также делает работу go get и go install). go build, по дизайну, не требует дополнительных инструментов, таких как make или cmake.

Если вы используете CMake (или любую другую систему сборки), вы просто сделаете жизнь сложнее для себя (если вы планируете использовать библиотеки, разработанные другими) или для других людей (если вы планируете разрабатывать библиотеки, предназначенные для используемые другими). ​​