Wie Konfiguriere ich portable parallel baut in CMake?

Ist es irgendwie möglich in der Lage sein, eine parallele Version, egal welches build-tool verwendet wird?

Unter Unix können wir hinzufügen make -jN wobei N die Anzahl der threads, und unter Windows habe ich Hinzugefügt, um die CXX_FLAG "/MP" die dann in Visual Studio verwendet, um parallel bauen...(?) Wie kann ich meine version so, dass CMAKE_MAKE_PROGRAM ist nicht immer erweitert, wenn ich CMake?

Was ist eine Allgemeine Lösung?

Ich kam mit dieser:

# Add some multithreaded build support
MARK_AS_ADVANCED(MULTITHREADED_BUILD)
set(MULTITHREADED_BUILD 12 CACHE STRING "How many threads are used to build the project")
if(MULTITHREADED_BUILD)
    if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles")
            message(STATUS ${CMAKE_BUILD_TOOL})
            set(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j${MULTITHREADED_BUILD}")
            message(STATUS "Added arguments to CMAKE_BUILD_TOOL: ${CMAKE_MAKE_PROGRAM}")
    elseif(MSVC)
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
      message(STATUS "Added parallel build arguments to CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
    endif()
endif()
  • Nicht sicher, es kann getan werden, glaube nicht, dass seine eine gute Idee auf jeden Fall. CMake beschreibt, wie das Projekt aufgebaut ist und wie seine Sache macht ist eine andere Ebene von CMake.
  • Exetnding Ihr Ansatz nur hinzufügen -DMULTITHREADED_BUILD=12 auf der Kommandozeile von cmake erstellt. und entfernen Sie die SET(MULTITHREADED_BUILD ...)
  • In meinem Fall mit Eclipse CDT führt zu Fehler: "/usr/bin/make -j8" alle können Nicht starten Sie das Programm "/usr/bin/make -j8": Unbekannten Grund Fehler: Programm "/usr/bin/make -j8" not found in PATH
  • Mein CMake - / Eclipse-CDT-Fehler aufgrund CMAKE_MAKE_PROGRAM bug: cmake.org/Bug/view.php?id=15497
  • Als dieser Beitrag ist ein bisschen alt, Nutzer von CMake >= 3.12.0 sollte die Antwort von @usr1234567
InformationsquelleAutor Gabriel | 2012-05-21
Schreibe einen Kommentar