/MP flag is specifically for compiling object files in parallel so it won't cause multiple custom commands to be run in parallel as each one is a msbuild custom build item task. I don't know exactly how msbuild treats custom tasks such as these, but they might be implicitly serial.
On Wed, Sep 24, 2014 at 3:27 AM, Glenn Coombs <glenn.coo...@gmail.com> wrote: > I am already using /MP and the equivalent to the /maxcpucount. It is the > /MP one that is important in this context as I am only concerned with > improving the speed of a single project out of the many in my solution. I > believe the problem is with cmake rather than with Visual Studio as I can > select any of the other projects in the same solution and build them in > isolation and they will build their object files in parallel. For some > reason cmake isn't seeing the custom commands as something it can run in > parallel. > > -- > Glenn > > On 23 September 2014 16:20, Robert Maynard <robert.mayn...@kitware.com> > wrote: >> >> If you are using VS2013 you should look at the /maxcpucount flag which >> allows msbuild to build multiple projects at the same time. You will >> have to manually balance /MP and /maxcpucount as they cause a P*C >> number of processes to execute. >> >> On Tue, Sep 23, 2014 at 11:05 AM, Glenn Coombs <glenn.coo...@gmail.com> >> wrote: >> > I have the following code in one of my CMakeLists.txt files: >> > >> > set(feature_files_h) >> > set(feature_files_cpp) >> > >> > macro(create_feature_files NAME) >> > add_custom_command( >> > OUTPUT ${FEATURES_OUTPUT_DIR}/${NAME}.cpp >> > ${FEATURES_OUTPUT_DIR}/${NAME}.h >> > DEPENDS ${FEATURES_INPUT_DIR}/${NAME}.txt >> > WORKING_DIRECTORY ${SIM_ROOT}/tools/features >> > COMMAND perl ${FEATURES_PERL_PATH} "-s${FEATURES_INPUT_DIR}" >> > "-d${FEATURES_OUTPUT_DIR}" "-f${NAME}" >> > ) >> > list(APPEND feature_files_h ${FEATURES_OUTPUT_DIR}/${NAME}.h) >> > list(APPEND feature_files_cpp ${FEATURES_OUTPUT_DIR}/${NAME}.cpp) >> > endmacro() >> > >> > create_feature_files(example_features) >> > create_feature_files(fme_core_features) >> > create_feature_files(fme_features) >> > create_feature_files(front_end_features) >> > create_feature_files(inloop_filter_features) >> > >> > add_library(${PROJECT_NAME} STATIC ${feature_files_cpp} >> > ${feature_files_h} >> > ${SIM_ROOT}/tools/features/cpp-code/cfeatures.cpp) >> > >> > which creates a library from an existing source file called >> > cfeatures.cpp >> > and from a bunch of auto-generated .cpp and .h files. The whole thing >> > works >> > fine and runs the perl script to create each of the auto-generated files >> > before creating the library. The only problem I have with it is that it >> > is >> > quite slow and I would like to speed it up by having it run the perl >> > commands to create the auto-generated files in parallel. Currently, >> > each of >> > the auto-generated cpp files is generated sequentially, then they are >> > all >> > compiled in parallel and the library created in the final step. >> > >> > I'm using cmake 3.0.0 with Visual Studio 2013 Express Edition. And I've >> > added the /MP option so that Visual Studio will do parallel builds. >> > I've >> > also set the "Projects and Solutions=>Build and Run=>maximum number of >> > parallel project builds" option to 4. This works well with all the >> > normal >> > cpp files in other projects and I easily see all 4 cpu cores maxxed out. >> > But when building this project only 1 cpu core is used. >> > >> > Can anybody tell me how to change it so that the auto-geneated files are >> > created in parallel as well ? >> > >> > -- >> > Glenn >> > >> > >> > -- >> > >> > Powered by www.kitware.com >> > >> > Please keep messages on-topic and check the CMake FAQ at: >> > http://www.cmake.org/Wiki/CMake_FAQ >> > >> > Kitware offers various services to support the CMake community. For more >> > information on each offering, please visit: >> > >> > CMake Support: http://cmake.org/cmake/help/support.html >> > CMake Consulting: http://cmake.org/cmake/help/consulting.html >> > CMake Training Courses: http://cmake.org/cmake/help/training.html >> > >> > Visit other Kitware open-source projects at >> > http://www.kitware.com/opensource/opensource.html >> > >> > Follow this link to subscribe/unsubscribe: >> > http://public.kitware.com/mailman/listinfo/cmake > > -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake