Как заставить CMake работать с языком программирования go? - PullRequest
16 голосов
/ 02 ноября 2011

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

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

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

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

TIA за любой совет, который поможет мне начать.

Ответы [ 2 ]

17 голосов
/ 02 ноября 2011

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

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

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

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

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

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

6 голосов
/ 02 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...