使特定于Unix的CMake过程跨平台

Making a Unix-specific CMake procedure cross-platform

本文关键字:CMake 过程 跨平台 Unix      更新时间:2023-10-16

我已经写了一个小的CMake模块,嗯,为了什么并不重要。关键是它的作用如下:

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

这在类Unix系统上相对健壮,其中catbash可用,并且路径分隔符/。(可能还有其他我忽略的假设。但是 - 我希望这也适用于 Windows 和其他系统。我该怎么做?

笔记:

  • 如果相关:外壳脚本和 CMake 模块。
  • 如果有帮助,我可以使用C++而不是 C。

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

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

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