CMake 检测是否存在C++编译器



我有一个项目,它首先使用C++程序来处理一些模板文件(设置为子目录),然后需要交叉编译才能在vxworks上运行。交叉编译部分将通过自定义命令和.bat文件完成,但第一部分将根据可用选项而有所不同。

如果计算机具有适当的编译器,则应在运行模板处理器程序之前根据需要对其进行编译。但是,某些计算机没有常规的 c++ 编译器。在这种情况下,我想假设模板处理器程序已安装到特定位置并继续使用该预构建版本。

我将如何与CMake一起解决这个问题?

你可以试一试try_run。它编译并执行C++源代码。如果执行失败。它在作为第一个参数传递的失败运行变量中指示。
使用它的优点是,您不必处理正确的编译器调用或任何标志。

文档:https://cmake.org/cmake/help/v3.4/command/try_run.html
尤其是关于交叉编译的部分