Могут ли параллельные задачи типа Exec работать параллельно с параметром --parallel? - PullRequest
0 голосов
/ 03 ноября 2019

В Eclipse при создании проектов я использовал опцию «C ++ Managed Build». Однако Eclipse Doesent предоставляет поддержку для создания полного приложения. Поэтому я создал скрипт сборки Gradle, как показано ниже. У меня есть 3 независимых проекта и 4-й проект, в котором используются предыдущие 3 проекта. Ниже приведен мой сценарий gradle:

task compileDebugCpu(type: Exec) {
     workingDir "$projectDir/cpu/Debug"
     commandLine 'make', 'all'
}

task compileDebugMemory(type: Exec) {
     workingDir "$projectDir/memory/Debug"
     commandLine 'make', 'all'
}

task compileDebugHardDrive(type: Exec) {
     workingDir "$projectDir/harddrive/Debug"
     commandLine 'make', 'all'
}

task compileDebug(type: Exec) {
     workingDir "$projectDir/ComputerFacade/Debug"
     commandLine 'make', 'all'
}

compileDebug.dependsOn compileDebugCpu, compileDebugMemory, compileDebugHardDrive

task debugCleanCpu(type: Exec) {
     workingDir "$projectDir/cpu/Debug"
     commandLine 'make', 'clean'
}

task debugCleanMemory(type: Exec) {
     workingDir "$projectDir/memory/Debug"
     commandLine 'make', 'clean'
}

task debugCleanHardDrive(type: Exec) {
     workingDir "$projectDir/harddrive/Debug"
     commandLine 'make', 'clean'
}

task debugClean(type: Exec) {
     dependsOn debugCleanCpu
     dependsOn debugCleanMemory
     dependsOn debugCleanHardDrive
     workingDir "$projectDir/ComputerFacade/Debug"
     commandLine 'make', 'clean'
}

Теперь я попытался выполнить его с помощью параметров --parallel

$ gradle compileDebug --parallel
   and 
$ gradle debugClean --parallel

и посмотрел результаты сканирования. Похоже, задачи выполняются последовательно.

Здесь у меня есть результат сканирования: https://scans.gradle.com/s/yqef5fdmjw7li/timeline

Может кто-нибудь дать мне знать, как распараллелить эти задачи?

Не уверен, поможет ли это, но ниже вывод "gradle compileDebug --parallel":

$ gradle compileDebug --parallel

 > Task :compileDebugCpu
 Building file: ../src/cpu.cpp
 Invoking: GCC C++ Compiler
 g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/cpu.d" -MT"src/cpu.o" -o "src/cpu.o" "../src/cpu.cpp"
 Finished building: ../src/cpu.cpp

 Building target: libcpu.so
 Invoking: MacOS X C++ Linker
 g++ -dynamiclib -o "libcpu.so"  ./src/cpu.o   
 Finished building target: libcpu.so


 > Task :compileDebugHardDrive
 Building file: ../src/harddrive.cpp
 Invoking: GCC C++ Compiler
 g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/harddrive.d" -MT"src/harddrive.o" -o "src/harddrive.o" "../src/harddrive.cpp"
 Finished building: ../src/harddrive.cpp

 Building target: libharddrive.so
 Invoking: MacOS X C++ Linker
 g++ -dynamiclib -o "libharddrive.so"  ./src/harddrive.o   
 Finished building target: libharddrive.so


 > Task :compileDebugMemory
 Building file: ../src/memory.cpp
 Invoking: GCC C++ Compiler
 g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/memory.d" -MT"src/memory.o" -o "src/memory.o" "../src/memory.cpp"
 Finished building: ../src/memory.cpp

 Building target: libmemory.so
 Invoking: MacOS X C++ Linker
 g++ -dynamiclib -o "libmemory.so"  ./src/memory.o   
 Finished building target: libmemory.so


 > Task :compileDebug
 Building file: ../src/ComputerFacade.cpp
 Invoking: GCC C++ Compiler
 g++ -std=c++0x -I../../cpu/src -I../../harddrive/src -I../../memory/src -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/ComputerFacade.d" -MT"src/ComputerFacade.o" -o "src/ComputerFacade.o" "../src/ComputerFacade.cpp"
 Finished building: ../src/ComputerFacade.cpp

 Building target: ComputerFacade.out
 Invoking: MacOS X C++ Linker
 g++ -L../../cpu/Debug -L../../harddrive/Debug -L../../memory/Debug -o "ComputerFacade.out"  ./src/ComputerFacade.o   -lcpu -lharddrive -lmemory
 Finished building target: ComputerFacade.out


 BUILD SUCCESSFUL in 6s
 4 actionable tasks: 4 executed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...