Compile Arduino Code on Notepad++ and Nppexec.

I spent a lot of time searching around how to do it, but mostly, I found ways of opening up the IDE and pass the .ino path as argument. So I opened up Arduino and compiled a program in verbose and copied the commands with proper Environment variables and execute it in Nppexec. Copy and paste the below code to Nppexec temp script and save.

"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "$(FULL_CURRENT_PATH)" -o "$(FULL_CURRENT_PATH).o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\avr-libc\malloc.c" -o "$(CURRENT_DIRECTORY)\malloc.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\avr-libc\realloc.c" -o "$(CURRENT_DIRECTORY)\realloc.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\WInterrupts.c" -o "$(CURRENT_DIRECTORY)\WInterrupts.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring.c" -o "$(CURRENT_DIRECTORY)\wiring.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring_analog.c" -o "$(CURRENT_DIRECTORY)\wiring_analog.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring_digital.c" -o "$(CURRENT_DIRECTORY)\wiring_digital.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring_pulse.c" -o "$(CURRENT_DIRECTORY)\wiring_pulse.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring_shift.c" -o "$(CURRENT_DIRECTORY)\wiring_shift.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-gcc" -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\wiring_analog.c" -o "$(CURRENT_DIRECTORY)\wiring_analog.c.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\CDC.cpp" -o "$(CURRENT_DIRECTORY)\CDC.cpp.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\HardwareSerial.cpp" -o "$(CURRENT_DIRECTORY)\HardwareSerial.cpp.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\HID.cpp" -o "$(CURRENT_DIRECTORY)\HID.cpp.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\IPAddress.cpp" -o "$(CURRENT_DIRECTORY)\IPAddress.cpp.o"
"%PATH_TO_ARDUINO%\hardware\tools\avr\bin\avr-g++" -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=%uC% -DF_CPU=%FREQUENCY_IN_HX%L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I"%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino" -I"%PATH_TO_ARDUINO%\hardware\arduino\variants\standard" "%PATH_TO_ARDUINO%\hardware\arduino\cores\arduino\main.cpp" -o "$(CURRENT_DIRECTORY)\main.cpp.o"

**Rest of the Script is on Pastebin

Download Script: Nppexec Compile in Arduino Script - Pastebin.com
Replace %uC% with your Microcontroller name:
atmega8, atmega168, atmega328 etc.
Replace %FREQUENCY_IN_HZ% with Frequency of Crystal, usually 16000000
Replace %PATH_TO_ARDUINO% with Path to arduino install directory, usually C:\Program Files\Arduino in Windows
**Remember ** don't add "" anywhere, it's already added.

This could work with other softwares also but you'll have to change the Environment variables like $(FULL_CURRENT_PATH) etc.

I have no experience with a Arduino Mega/Nano so any help and/or suggestions are welcome. Pardon my English, I'm not a native speaker. :stuck_out_tongue: