This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Cannot build project: No rule for make target - Makefile generation appears to be broken somehow



I'm trying to work on a project that was created a couple years ago. We have a copy of the source in our version control system, and a copy of the installation package for the version of CCS that was originally used (5.2.1).

A fellow developer has been successful installing this version of CCS, and then building the project. He had to tweak some things (like include paths), but doesn't remember everything he went through to make it work. I am unable to do the same.

On my machine, I have another version of CCS installed, 6.0.1, and it's in c:\ti.

I installed 5.2.1 to c:\ti-5.2.1, and let it do a complete installation. When I first launched it, it "discovered" a bunch of packages that are installed in c:\ti. I unchecked them all because I want to use the libraries/tools that are in the 5.2.1 installation. I then imported the project and tried to build it.

The first issue was the project, by default, was trying to run "make" without a path, and was actually running Borland make. I changed the project properties so that the make command was "C:\ti-5.2.1\ccsv5\utils\bin\gmake -k", which was what my fellow developer had set (he didn't mention changing this). Now when I build, I get the "No rule for make target" error.

Looking at the makefile that CCS generated on my machine and comparing it to my fellow developer's makefile shows that the target is definitely NOT in my makefile. Why not?

Here is a link to the makefile as generated by my machine (does not work).

Here is a link to the makefile as generated by the other developer's machine (works)

  • Hi Steve,
    pastebin is blocked by my company firewall. Can you post them in another location?

    Thanks
    ki
  • First - I clicked the wrong thing a second ago and flagged your reply as spam/abuse. Oops :)

    Here's the non-working makefile:

    ################################################################################
    # Automatically-generated file. Do not edit!
    ################################################################################
    
    -include ../makefile.init
    
    RM := 
    
    # All of the sources participating in the build are defined here
    -include sources.mk
    -include src/Drivers/Micro/subdir.mk
    -include subdir.mk
    -include objects.mk
    
    -include ../makefile.defs
    
    # Add inputs and outputs from these tool invocations to the build variables 
    
    # All Target
    all: 1812_Radian_Admittance_Micro.out
    
    # Tool invocations
    	@echo 'No tool found that can build the extension specified with the build artifact name $@'
    # Other Targets
    clean:
    	-$(RM)  1812_Radian_Admittance_Micro.out
    	-@echo ' '
    
    post-build:
    	-@echo 'Create flash image: TI-TXT'
    	-"" --ti_txt "1812_Radian_Admittance_Micro.out" -o "1812_Radian_Admittance_Micro.txt" -order MS -romwidth 16
    	-@echo ' '
    
    .PHONY: all clean dependents
    .SECONDARY: post-build
    
    -include ../makefile.targets
    

    And here is the working version:

    ################################################################################
    # Automatically-generated file. Do not edit!
    ################################################################################
    
    SHELL = cmd.exe
    
    CG_TOOL_ROOT := C:/ti/ccsv5/tools/compiler/msp430_4.0.0
    
    ORDERED_OBJS += \
    $(GEN_CMDS__FLAG) \
    "./src/Application/StateMachine.obj" \
    "./src/Application/Main.obj" \
    "./src/Application/Admittance.obj" \
    "./src/Components/Version.obj" \
    "./src/Components/SingleBoardComputerSerial.obj" \
    "./src/Components/SingleBoardComputer.obj" \
    "./src/Components/GpioManager.obj" \
    "./src/Components/EventQueue.obj" \
    "./src/Components/Debug.obj" \
    "./src/Drivers/Micro/Uart.obj" \
    "./src/Drivers/Micro/Timer.obj" \
    "./src/Drivers/Micro/System.obj" \
    "./src/Drivers/Micro/Pwm.obj" \
    "./src/Drivers/Micro/Interrupt.obj" \
    "./src/Drivers/Micro/I2c.obj" \
    "./src/Drivers/Micro/Gpio.obj" \
    "./src/Drivers/Micro/Flash.obj" \
    "./src/Drivers/Micro/Clock.obj" \
    "./src/Drivers/Micro/Board.obj" \
    "./src/Drivers/Micro/Adc.obj" \
    "./src/Drivers/Utilities/TimerTick.obj" \
    "./src/Drivers/Utilities/Assert.obj" \
    -l"libc.a" \
    "../lnk_msp430f5342.cmd" \
    
    -include ../makefile.init
    
    RM := DEL /F
    RMDIR := RMDIR /S/Q
    
    # All of the sources participating in the build are defined here
    -include sources.mk
    -include subdir_vars.mk
    -include src/Drivers/Utilities/subdir_vars.mk
    -include src/Drivers/Micro/subdir_vars.mk
    -include src/Components/subdir_vars.mk
    -include src/Application/subdir_vars.mk
    -include subdir_rules.mk
    -include src/Drivers/Utilities/subdir_rules.mk
    -include src/Drivers/Micro/subdir_rules.mk
    -include src/Components/subdir_rules.mk
    -include src/Application/subdir_rules.mk
    -include objects.mk
    
    ifneq ($(MAKECMDGOALS),clean)
    ifneq ($(strip $(S_DEPS)),)
    -include $(S_DEPS)
    endif
    ifneq ($(strip $(S_UPPER_DEPS)),)
    -include $(S_UPPER_DEPS)
    endif
    ifneq ($(strip $(S62_DEPS)),)
    -include $(S62_DEPS)
    endif
    ifneq ($(strip $(C64_DEPS)),)
    -include $(C64_DEPS)
    endif
    ifneq ($(strip $(ASM_DEPS)),)
    -include $(ASM_DEPS)
    endif
    ifneq ($(strip $(CC_DEPS)),)
    -include $(CC_DEPS)
    endif
    ifneq ($(strip $(S55_DEPS)),)
    -include $(S55_DEPS)
    endif
    ifneq ($(strip $(C67_DEPS)),)
    -include $(C67_DEPS)
    endif
    ifneq ($(strip $(C??_DEPS)),)
    -include $(C??_DEPS)
    endif
    ifneq ($(strip $(CLA_DEPS)),)
    -include $(CLA_DEPS)
    endif
    ifneq ($(strip $(CPP_DEPS)),)
    -include $(CPP_DEPS)
    endif
    ifneq ($(strip $(S??_DEPS)),)
    -include $(S??_DEPS)
    endif
    ifneq ($(strip $(C_DEPS)),)
    -include $(C_DEPS)
    endif
    ifneq ($(strip $(C62_DEPS)),)
    -include $(C62_DEPS)
    endif
    ifneq ($(strip $(CXX_DEPS)),)
    -include $(CXX_DEPS)
    endif
    ifneq ($(strip $(C++_DEPS)),)
    -include $(C++_DEPS)
    endif
    ifneq ($(strip $(ASM_UPPER_DEPS)),)
    -include $(ASM_UPPER_DEPS)
    endif
    ifneq ($(strip $(K_DEPS)),)
    -include $(K_DEPS)
    endif
    ifneq ($(strip $(C43_DEPS)),)
    -include $(C43_DEPS)
    endif
    ifneq ($(strip $(S67_DEPS)),)
    -include $(S67_DEPS)
    endif
    ifneq ($(strip $(SA_DEPS)),)
    -include $(SA_DEPS)
    endif
    ifneq ($(strip $(S43_DEPS)),)
    -include $(S43_DEPS)
    endif
    ifneq ($(strip $(OPT_DEPS)),)
    -include $(OPT_DEPS)
    endif
    ifneq ($(strip $(S64_DEPS)),)
    -include $(S64_DEPS)
    endif
    ifneq ($(strip $(C_UPPER_DEPS)),)
    -include $(C_UPPER_DEPS)
    endif
    ifneq ($(strip $(C55_DEPS)),)
    -include $(C55_DEPS)
    endif
    endif
    
    -include ../makefile.defs
    
    # Add inputs and outputs from these tool invocations to the build variables 
    
    # All Target
    all: 1812_Radian_Admittance_Micro.out
    
    # Tool invocations
    1812_Radian_Admittance_Micro.out: $(OBJS) $(CMD_SRCS) $(GEN_CMDS)
    	@echo 'Building target: $@'
    	@echo 'Invoking: MSP430 Linker'
    	"C:/ti/ccsv5/tools/compiler/msp430_4.0.0/bin/cl430" -vmspx --abi=coffabi -g --define=__MSP430F5342__ --verbose_diagnostics --diag_warning=225 --display_error_number --issue_remarks --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU23 --silicon_errata=CPU40 --printf_support=minimal -z -m"1812_Radian_Admittance_Micro.map" --stack_size=160 --heap_size=160 --use_hw_mpy=F5 -i"C:/ti/ccsv5/ccs_base/msp430/include" -i"C:/ti/ccsv5/tools/compiler/msp430_4.0.0/lib" -i"C:/ti/ccsv5/tools/compiler/msp430_4.0.0/include" --reread_libs --warn_sections --rom_model -o "1812_Radian_Admittance_Micro.out" $(ORDERED_OBJS)
    	@echo 'Finished building target: $@'
    	@echo ' '
    	$(MAKE) --no-print-directory post-build
    
    # Other Targets
    clean:
    	-$(RM) $(MSP430_EXECUTABLE_OUTPUTS__QUOTED) "1812_Radian_Admittance_Micro.out"
    	-$(RM) "src\Drivers\Utilities\Assert.pp" "src\Drivers\Utilities\TimerTick.pp" "src\Drivers\Micro\Adc.pp" "src\Drivers\Micro\Board.pp" "src\Drivers\Micro\Clock.pp" "src\Drivers\Micro\Flash.pp" "src\Drivers\Micro\Gpio.pp" "src\Drivers\Micro\I2c.pp" "src\Drivers\Micro\Interrupt.pp" "src\Drivers\Micro\Pwm.pp" "src\Drivers\Micro\System.pp" "src\Drivers\Micro\Timer.pp" "src\Drivers\Micro\Uart.pp" "src\Components\Debug.pp" "src\Components\EventQueue.pp" "src\Components\GpioManager.pp" "src\Components\SingleBoardComputer.pp" "src\Components\SingleBoardComputerSerial.pp" "src\Components\Version.pp" "src\Application\Admittance.pp" "src\Application\Main.pp" "src\Application\StateMachine.pp" 
    	-$(RM) "src\Drivers\Utilities\Assert.obj" "src\Drivers\Utilities\TimerTick.obj" "src\Drivers\Micro\Adc.obj" "src\Drivers\Micro\Board.obj" "src\Drivers\Micro\Clock.obj" "src\Drivers\Micro\Flash.obj" "src\Drivers\Micro\Gpio.obj" "src\Drivers\Micro\I2c.obj" "src\Drivers\Micro\Interrupt.obj" "src\Drivers\Micro\Pwm.obj" "src\Drivers\Micro\System.obj" "src\Drivers\Micro\Timer.obj" "src\Drivers\Micro\Uart.obj" "src\Components\Debug.obj" "src\Components\EventQueue.obj" "src\Components\GpioManager.obj" "src\Components\SingleBoardComputer.obj" "src\Components\SingleBoardComputerSerial.obj" "src\Components\Version.obj" "src\Application\Admittance.obj" "src\Application\Main.obj" "src\Application\StateMachine.obj" 
    	-@echo 'Finished clean'
    	-@echo ' '
    
    post-build:
    	-@echo 'Create flash image: TI-TXT'
    	-"C:/ti/ccsv5/tools/compiler/msp430_4.0.0/bin/hex430" --ti_txt "1812_Radian_Admittance_Micro.out" -o "1812_Radian_Admittance_Micro.txt" -order MS -romwidth 16
    	-@echo ' '
    
    .PHONY: all clean dependents
    .SECONDARY: post-build
    
    -include ../makefile.targets
    

  • Steve Ziuchkovski said:
    First - I clicked the wrong thing a second ago and flagged your reply as spam/abuse. Oops :)

    lol... i await the tongue lashing from the forum administrators now :)


    Yes that first makefile certainly looks "off". My first question - how are you importing this project into CCS? Are you importing it as a CCS Project ("Project -> Import Existing CCS Eclipse Project") or are you importing as a standard C/C++ Project ("File -> Import -> General")? The former is what you want to do.

  • Ki-Soo Lee said:

    Yes that first makefile certainly looks "off". My first question - how are you importing this project into CCS? Are you importing it as a CCS Project ("Project -> Import Existing CCS Eclipse Project") or are you importing as a standard C/C++ Project ("File -> Import -> General")? The former is what you want to do.

    Yes, I figured this out myself after re-reading the "Projects and Build Handbook" page. :) It turns out I simply needed to import as a CCS project and it now builds (well, I have other issues now, but that's another story).

    In CCS 6.0.1 we have a project for a C6655 DSP. I commonly go to File | Import | Team Project (which is provided by the Microsoft Team Explorer Everywhere plug-in for TFS integration), and I'm able to build that project without an issue (and it uses xdctools), so I assumed it would also work for this project ... but I guess not!

    Thanks for your time.

  • Good to hear you resolved the issue.

    Steve Ziuchkovski said:
    In CCS 6.0.1 we have a project for a C6655 DSP. I commonly go to File | Import | Team Project (which is provided by the Microsoft Team Explorer Everywhere plug-in for TFS integration), and I'm able to build that project without an issue (and it uses xdctools), so I assumed it would also work for this project ... but I guess not!

    It really depends on the project itself. If the project was created as a standard Eclipse C/C++ project, then it can be imported as a standard Eclipse C/C++ project. Basically if there is a *.ccsproject file in the project directory, that project is a CCS specific project