如何让CMake使用go编程语言?

kfm*_*e04 16 cmake go

我一直在使用CMake和C++来构建库和可执行文件,并希望将其用于go编程语言.

我需要采取哪些步骤来配置CMake才能使用go编程语言?

基本上,我的编译器是6g,它产生一个编译的foo.6.我通过6l foo.6将它发送到一个链接器,我就完成了.我已经构建并安装了编译器和链接器.

显然,我可以为此编写一个简单的Makefile,但在整个项目中使用CMake会很好.

TIA提供任何可以帮助我入门的建议.

arr*_*owd 18

您可能希望实现CMake对Go的支持.粗略地说,它涉及以下步骤:

  1. 创建CMakeDetermineGoCompiler.cmake模块,该模块将为当前系统找到Go编译器.
  2. 创建CMakeGoCompiler.cmake.in - 一个模板,由CMakeDetermineGoCompiler配置.

  3. 创建CMakeTestGoCompiler.cmake,该模块将编译一个简单的go源来检查编译器是否工作.

  4. 创建CMakeGoInformation.cmake,它将设置一些与语言相关的变量(CMAKE_GO_LINK_EXECUTABLE等)

这些东西应放在CMAKE_MODULES_DIR中.作为参考,您可以了解如何实现Java/CXX支持.

或者,如果不想弄乱这些内部东西,你可以通过创建一个宏()来解决你的任务,这将创建一堆自定义目标/命令(请参阅add_custom_ {target,command}()文档).


Krz*_*zyk 5

不使用CMake(或任何其他构建系统)符合您的最佳利益.

Go有一个简单的内置方式来构建包:( go build也可以制作go getgo install工作).go build根据设计,不需要像make或cmake这样的其他工具.

如果您使用CMake(或任何其他构建系统),您将只为自己(如果您计划使用由他人开发的库)或其他人(如果您计划开发旨在供他人使用的库)的生活更难).

  • 或者构建像protobuffers这样的中间文件,或者构建可分发的tarball用于发布,或者基本上是人们似乎忘记的其他任务,对于实际编写的人而言,这些任务比"go get"更复杂. (10认同)
  • 我认为这个例外是使用`gccgo`并将目标文件与已经使用CMake的现有C,Fortran,Ada或C++项目相结合. (7认同)