端末からmake
を呼び出すときはいつでも私のCMakeプロジェクトをmake -j N
でビルドします。毎回手動で-j
オプションを設定したくありません。CMakeセットアップから '-j'オプションをデフォルトで使用するようにしました
このため、CMAKE_MAKE_PROGRAMを特定のコマンドラインに設定しました。私はProcessorCount()
関数を使用して、並行してビルドを実行するプロセッサの数を示します。
make
を実行すると、スピードアップが表示されません。しかし、もし私がmake -j N
を実行すると、それは間違いなく速く構築されます。
この問題についてお手伝いしますか? (私は、Linux上でこれを開発しています。)
は、ここで私はCMakeList.txt
に使うコードの抜粋です:
include(ProcessorCount)
ProcessorCount(N)
message("number of processors: " ${N})
if(NOT N EQUAL 0)
set(CTEST_BUILD_FLAGS -j${N})
set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
set(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j ${N}")
endif()
message("cmake make program" ${CMAKE_MAKE_PROGRAM})
はどうもありがとうございました。
なし一部。だから、あなたは何をスピードアップしたいですか? ** cmakeフェーズは並列化できないことに注意してください**:CMakeスクリプトは、pythonのような他のスクリプト言語のように、行ごとに順次処理されます。反対に、**ビルドフェーズ**は並列化され、 'make -j'はまさにこれを行います。 – Tsyvarev
CMake/buildパフォーマンスに関するいくつかのアドバイス:http://stackoverflow.com/q/37327526/2799037 – usr1234567
私はそれが実行されないことを知っています、それはCMakeList.txtのセグメントです、私は単にCMAKE_MAKE_PROGRAMを設定しようとしています。毎回ターミナルで明示的に設定するのではなく、私が端末からmakeを呼び出すたびに "make -j N"を呼び出すようにします。 – BatiCode