3
我建立的應用程序與flto,我想parallelise它是在化妝如使用的所有核,如果我用make -j4
運行它,然後在4芯在CMake的傳遞flto = jobserver與gcc
例子:
cmake_minimum_required(VERSION 2.8)
project(a)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=jobserver")
add_executable(a a.cpp b.cpp)
其中a.cpp
和b.cpp
任何合理CPPS(其中一個具有主)
與make -j2
跑步給我:
-- Configuring done
-- Generating done
-- Build files have been written to: ...
[ 33%] Building CXX object CMakeFiles/a.dir/b.cpp.o
[ 66%] Building CXX object CMakeFiles/a.dir/a.cpp.o
[100%] Linking CXX executable a
make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
[100%] Built target a
因此,只使用一個內核。是否有可能在這裏將有關jobserver的信息傳遞給gcc?
會選擇一個類似['ninja'構建系統](https://ninja-build.org/)的選項嗎?這真的加快了[我的項目構建](http://stackoverflow.com/questions/37327526/how-to-speed-up-compile-time-of-my-cmake-enabled-c-project)和漂亮關於CMake的一點是,您可以輕鬆切換到生成另一個構建環境(試一試)。 – Florian
@弗洛裏安,我會研究它,但讓解決方案更可取 – RiaD