5

为了确保无论构建主机使用何种发行版,我的 Linux 构建都是相同的,我已将我的编译器和 sysroot 文件打包到一个可重定位的 tar 文件中,并将其签入源代码控制。

因此,任何构建的第一步(或至少必须在任何编译步骤之前调用的步骤)都必须提取此 tar 文件。

如果我使用的是 makefile,这将很简单。但是,该项目正在使用 cmake,我想不出任何方法来使用 cmake。甚至可能我需要在 cmake 开始检测编译器之前调用此提取步骤:我可以对编译器名称进行硬编码,但是如果 cmake 在找不到编译器的情况下失败,那么我需要在该测试之前进行解包。

这可以用cmake吗?

4

1 回答 1

10

可以execute_process用来调用 cmake 的跨平台命令模式(cmake -E tar)。该命令将类似于:

execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf MyCompiler.bz2)

导致 CMake 检查有效编译器的命令是project,因此只要您在execute_process调用之前进行project调用,解包将在编译器检查之前完成。

于 2013-01-30T22:30:08.693 回答