有些實用程序通過將命令添加爲前綴來使用現有編譯器(因此不必調用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中混入單個變量的原因是如此痛苦。 –