我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake
) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host
)。
我像这样配置了构建系统:
cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]
对于其他(类似)构建,结果证明它distcc
工作得很好,因此配置正确。
可能是什么问题?
我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake
) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host
)。
我像这样配置了构建系统:
cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]
对于其他(类似)构建,结果证明它distcc
工作得很好,因此配置正确。
可能是什么问题?
事实证明,distcc
拒绝使用march=native
compile 选项。这当然是有道理的,因为可以组合具有混合优化标志的二进制文件。
只是为了让您知道,如果您有使用 的构建系统march=native
,如cmake
说明:
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
您必须禁用它,才能distcc
与奴隶一起使用。您必须手动指定架构标志。
或者,尝试检测使用distcc
:
include(CheckCXXCompilerFlag)
STRING(FIND "${CMAKE_CXX_COMPILER_LAUNCHER}" "distcc" found)
if (${found} LESS 0)
message(STATUS "trying to use -march=native")
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
else()
message(STATUS "detected 'distcc' build, hence not using -march=native")
endif()
要成功,请确保使用distcc
相应的cmake
编译器启动器工具:
cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]