Ashley Duncan
Ashley Duncan

Reputation: 1029

Eclipse CDT pre-build steps are not performed before build starts

Using the Eclipse IDE for C/C++ Developers (in this case Kinetis Design Studio), I have pre-build stps to delete a file and auto generate another file. However I notice in the build log that compilation is started before pre-build is complete! Not ideal if my auto generated header file is used early on.

I have also observed a similar problem with post build where multiple commands are executed but fail as are dependent on files from previous steps.

Does anyone have any thoughts or advice on how to ensure pre build is actually pre build?

17:54:49 **** Build of configuration debug for project TestProj_Firmware ****
make -k -j8 pre-build main-build 

PRE BUILD COMMAND EXECUTED

Delete main.o to force a build   &   Generate version.hpp
rm "Source\D3\main.o" & subwcrev "C:/dev/TestProj Firmware/TestProj_Firmware\.." "..\settings\Version.tmpl" "..\..\Source\D3\Version.hpp"

COMPILATION STARTED

Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/system_MK24F12.c
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_adc16.c
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_clock.c
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_common.c
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_crc.c
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_flash.c
Invoking: Cross ARM C Compiler
Invoking: Cross ARM C Compiler
Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_ftm.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/startup/system_MK24F12.d" -MT"Source/KSDK/startup/system_MK24F12.d" -c -o "Source/KSDK/startup/system_MK24F12.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/system_MK24F12.c"
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_adc16.d" -MT"Source/KSDK/drivers/fsl_adc16.d" -c -o "Source/KSDK/drivers/fsl_adc16.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_adc16.c"
Invoking: Cross ARM C Compiler
Invoking: Cross ARM C Compiler

FIRST PRE BUILD STEP EXECUTED (FAILS)

rm: can't remove 'Source\D3\main.o': No such file or directory

MORE COMPILATION

arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_clock.d" -MT"Source/KSDK/drivers/fsl_clock.d" -c -o "Source/KSDK/drivers/fsl_clock.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_clock.c"
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_common.d" -MT"Source/KSDK/drivers/fsl_common.d" -c -o "Source/KSDK/drivers/fsl_common.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_common.c"
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_crc.d" -MT"Source/KSDK/drivers/fsl_crc.d" -c -o "Source/KSDK/drivers/fsl_crc.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_crc.c"
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_flash.d" -MT"Source/KSDK/drivers/fsl_flash.d" -c -o "Source/KSDK/drivers/fsl_flash.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_flash.c"
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_ftm.d" -MT"Source/KSDK/drivers/fsl_ftm.d" -c -o "Source/KSDK/drivers/fsl_ftm.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_ftm.c"

SECOND PRE BUILD STEP EXECUTED

SubWCRev: 'C:\dev\TestProj Firmware'
Last committed at revision 242
Mixed revision range 242:243
Unversioned items found

CARRIES ON COMPILING

Building file: C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_gpio.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -ffreestanding -fno-builtin -Wall  -g -DDEBUG -D__STARTUP_CLEAR_BSS -DDEBUG_PRINT -DCPU_MK24FN1M0VLQ12 -DFSL_RTOS_FREE_RTOS -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Board" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/Config" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/SDMMCPort" -I"C:/dev/TestProj Firmware/TestProj_Firmware/../Source/D3/InFact" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/utilities" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/CMSIS/Include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/inc" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/sdmmc_2.1.2/port" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/fsl_sd_disk" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/middleware/fatfs_0.12b/src/option" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/include" -I"C:/dev/TestProj Firmware/TestProj_Firmware\..\Source\SDK_2.2_MK24FN1M0xxx12/rtos/freertos_9.0.0/Source/portable/GCC/ARM_CM4F" -std=gnu99 -mapcs -MMD -MP -MF"Source/KSDK/drivers/fsl_gpio.d" -MT"Source/KSDK/drivers/fsl_gpio.d" -c -o "Source/KSDK/drivers/fsl_gpio.o" "C:/dev/TestProj Firmware/Source/SDK_2.2_MK24FN1M0xxx12/devices/MK24F12/drivers/fsl_gpio.c"
Finished building: C:/dev/

Upvotes: 1

Views: 1997

Answers (6)

Guy Broadfoot
Guy Broadfoot

Reputation: 11

I am adding to this because I just had the same issue and found the "correct" solution to it. You should not be using a prebuilt step for this, you should be using a custom builder, which is any program or script you like.

Suppose you have:

  1. A managed project (i.e. one where Eclipse generates the make files itself on the fly)
  2. A program that generates C++ or other source code files in a folder in that project. The program is /fulpath/GenProg in this explanation.

Open the Properties dialog for the project, click on Builders in the list on the left of the dialog, click New and double click on the line that says Program. This should open the dialog titled "Edit Launch Configuration Properties".

On the Main tab, fill in a name for your builder configuration in the Name field. Fill in a complete path to your program, in our example /fullpath/GenProg and fill in the working directory. You can use one of the variables if there are any suitable by clicking on Variables. Finally, specify any parameters in the Arguments field. You can click on the Show Command Line button to see the command line Eclipse will generate from all of your input.

Click on the Refresh tab and tick "Refresh resource upon completion". From the radio buttons, I generally choose The "selected resource". Tick "Recursively include subfolders" if not already ticked. You might want to check the Build Option tab, I usually add the "During Auto Builds" option but you might not want this.

When you have done this, click on OK to get back to the Builders dialog. You will see your new configuration at the bottom of the list. Because the builder is generating the source code for our project, we want it executed and finished before the compilation and link steps start. So select it and using the "Up" button, move it to the top of the list. All other make steps now become dependent on your new builder step. If you wanted to define a post build action, instead of using the post-build command feature, you would do what we just did, except you would leave the builder configuration for the post build actions at the bottom of the list.

This also works nicely if you have told Eclipse to run compilations in parallel. On my MacBook M2 this gives build performance to die for.

I have done this for many projects, the one irritation is I have to make a new builder configuration each time for each project. I have not yet found a way to import an existing one. And of course, each one has a unique name.

I have only done this on MacOS; I cannot see any reason why it won't work on any other platform, though, but I have not tried it. Also, I am (always) on the latest version of Eclipse and all of its CDT tools.

In general, then, do not try anything fancy with the pre and post build commands, they are not synchronised as you would imagine they would be with the rest of the build. Define your own builder configs, and put them in the correct sequence in the list of builder configs. Then it works as you would expect it to work.

Upvotes: 1

rakslice
rakslice

Reputation: 8975

In your Makefile, add the pre-build target as a dependency of your main-build target.

main-build: whatever-other-stuff pre-build
     # ...

This will make sure that make does not try to build main-build until pre-build is complete.

If your Makefile is automatically generated by your IDE you will need to figure out how to get it to generate a correct one.

Background:

If make -j does something wrong when make without -j (so effectively -j 1) works, it means your build process has an implicit dependency on what order make happens to build the targets in. When you tell make to run multiple steps at the same time if possible, by running with -j > 1, it will still enforce dependencies that are actually in the make rules it is operating on -- it won't try to build a target before or during the build of a target it depends on, if it knows about the dependency. You just need to give it rules that capture all the actual dependencies of the things you're building.

Upvotes: 0

Jonah Graham
Jonah Graham

Reputation: 7980

This is fixed in recent Eclipse CDT releases. CDT 9.3 (released with Eclipse Oxygen) in 2017 and later releases. See more details in Bug 340300

Upvotes: 1

This console app is placed in the same folder as make.exe and eliminates this issue by waiting for the pre-build phase to complete before invoking the main build list. You're welcome to use and modify as needed. Set the Eclipse build to use vmake.exe rather than make.exe. here

Upvotes: 0

VictorEE
VictorEE

Reputation: 91

Every Eclipse is different, but in Neon I also continually found that the parallel build make -j8 settings kept "coming back" as commented by the OP. To fix that:

  • Properties -> C/C++, under the Builder Settings tab, check the 'Use default build command' box. This gets the Behavior tab Build settings to take over.
  • Disable parallel build - (uncheck that box in the Behavior tab)

Non-parallel build is still a lot slower, not sure there is a way around that.

Upvotes: 0

Ashley Duncan
Ashley Duncan

Reputation: 1029

OK, so looks like it is due to the issue mentioned here. I removed the -j option from the make command (found in the C++ Build setting, behavior tab) and now everything is executed in order. Unfortunately compilation is tortuously slow!

Upvotes: 1

Related Questions