有些实用程序通过将命令添加为前缀来使用现有编译器(因此不必调用cc -c file.c
,您可以调用distcc cc -c file.c
)。在CMake中使用编译器前缀命令(distcc,ccache)
使用CMake时,编译器命令可以改变,但是我遇到了试图使用distcc
的问题,尽管这可能适用于编译器的任何命令前缀(ccache
)。
CMake的预计编译器是绝对路径,
所以设置CMAKE_C_COMPILER
到/usr/bin/distcc /usr/bin/cc
,给出了一个错误:/usr/bin/distcc /usr/bin/cc is not a full path to an existing compiler tool.
- 设置编译器
/usr/bin/distcc
和CMAKE_C_COMPILER_ARG1
或CMAKE_C_FLAGS
开始与/usr/bin/cc
在某些情况下工作,但与CHECK_C_SOURCE_COMPILES
失败(检查是否th有一些方法可以支持这一点,即使前缀CMAKE_REQUIRED_FLAGS
没有工作)。
我发现做到这一点的唯一方法是包装在一个shell脚本的命令。
#!/bin/sh
exec /usr/bin/distcc /usr/bin/cc "[email protected]"
虽然这个作品,这将是很好能够使用与CMake的编译器帮手,而不必去虽然shell脚本(给一些小的开销,当构建系统可以只使用一个命令前缀)。
所以我的问题是:
可以CMake的使用编译器前缀命令(如distcc的)直接?没有shell脚本包装?
调用cmake的(如:'CC = “distcc的GCC” 当你设置'CC' /'CXX'环境变量cmake ..')由于某种原因不足? –
@Iskar Jarak,这个作品! (所以我想这可能是答案)。 有趣的是,它在内部使用第一个命令的'CMAKE_C_COMPILER'和第二个'CMAKE_C_COMPILER_ARG1'。我不知道发生了什么 - 因为我已经尝试在cmake-gui中设置这些参数,并且'CMAKE_C_COMPILER_ARG1'被'CHECK_C_SOURCE_COMPILES'忽略。 – ideasman42
很好用。设置环境变量可能也会设置一些其他的东西,CHECK_C_SOURCE_COMPILES使用的东西......尽管我不是100%......这就是为什么在CMake中混入单个变量的原因是如此痛苦。 –