0

我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host)。

我像这样配置了构建系统:

cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]

对于其他(类似)构建,结果证明它distcc工作得很好,因此配置正确。

可能是什么问题?

4

1 回答 1

1

事实证明,distcc拒绝使用march=nativecompile 选项。这当然是有道理的,因为可以组合具有混合优化标志的二进制文件。

只是为了让您知道,如果您有使用 的构建系统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 [...]
于 2021-04-27T13:05:57.453 回答