跨平台制作特定于Unix的CMake过程

时间:2018-06-23 18:55:08

标签: c++ cmake cross-platform portability cmake-modules

我已经编写了一个小CMake模块,但是,这无关紧要。关键是它的作用如下:

  • 当调用适当的CMake函数时,将调用具有相对路径scripts/whatever.sh(在项目目录下)的shell脚本。
  • shell脚本cat是一个'here-file',其中包含CMake找到的C编译器的C程序(回退到cc
  • 程序被编译,链接和运行,产生一些文本
  • 输出文本另存为CMake变量

这在类{Unix}的系统上相对可靠,其中catbash可用,并且路径分隔符为/。 (我可能会忽略其他假设。)但是-我希望它可以在Windows和其他系统上运行。我该怎么做?

注意:

1 个答案:

答案 0 :(得分:1)

您可以使用CMake脚本来实现跨平台。许多事情可以直接在CMakeLists.txt中执行,并且脚本中包含以下脚本:

  • CMake中的“文档中”支持不是最好的,但是将小程序的文本存储到CMake变量中并不是很困难。

  • execute_process能够从CMake脚本运行外部程序,并将该程序的输出存储在CMake变量中。另外,在某些情况下,try_compiletry_run可能会有用。