gpt4 book ai didi

c++ - DistCC 和 CMake - 在运行 make 时在本地和分布式构建之间进行选择

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:23 26 4
gpt4 key购买 nike

我的项目是使用 CMake 构建的,并使用 DistCC + GCC 编译。

我按如下方式配置编译器:

SET(CMAKE_C_COMPILER "distcc variation-of-gcc")

要构建项目,我只需运行“cmake”,然后运行“ma​​ke -jXX”。

虽然 distcc 确实加快了速度,但有时我想在没有分发的情况下构建 - 我希望它在机器上本地构建。

我知道我可以修改 DISTCC_HOSTS 以仅包含本地主机 - 但这仍然有 distcc 网络的开销,尽管它比其他机器的开销更快...

我也可以通过再次运行 cmake 并使用自定义标志修改 CMAKE_C_COMPILER 来实现。

但我正在寻找一种方法,只需将标志直接添加到“make”即可。

I.e.
# This will use distcc:
make -jXX ...
# This will run locally:
make LOCAL_BUILD=1 -jX ...

有我可以使用的 CMake 技巧吗?

最佳答案

我们使用以下代码允许 make time(而不是 cmake time)打开和关闭 -Werror 标志。

if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
# TODO: this approach for the WERROR only works with makefiles not Ninja
set(CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> $(WERROR) -o <OBJECT> -c <SOURCE>")
endif()

然后我们运行

make WERROR=-Werror

打开警告作为错误。

我希望您可以做一些类似的事情,是否使用来自 make 变量的 distcc。像这样:

set(CMAKE_CXX_COMPILE_OBJECT "$(USE_DISTCC) <CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")

然后运行

make USE_DISTCC=distcc

或者只是

make

关于c++ - DistCC 和 CMake - 在运行 make 时在本地和分布式构建之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25712216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com