В 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