📄 makefile
字号:
ifeq ($(GOAL),$(findstring $(GOAL),$(MONDENA1_GRP)))
BOARD = $(DRAM_FLAGS) -DBD_MONDENA1
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MARANELLO_A6B5_GRP)))
BD_REV = -DMARANELLO_A6B5 -DIDLE_LOW
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MARANELLO_A9B8_GRP)))
BD_REV = -DMARANELLO_A9B8 -DIDLE_LOW
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MARANELLO_GRP)))
BOARD = $(DRAM_FLAGS) $(BD_REV) -DBD_MARANELLO
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MARANELLO1_GRP)))
BOARD = $(DRAM_FLAGS) -DBD_MARANELLO1
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SILAN_GRP)))
BOARD = $(DRAM_FLAGS) -DBD_MARANELLOSL1 -DIDLE_LOW
endif
#
# Servo related options
#
ifeq ($(GOAL),$(findstring $(GOAL),$(SONY_3DISC_GRP)))
SONY_3DISC = -DSONY3D
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(USE_C2PO_GRP)))
USE_C2PO = -DDSC_ENABLE_C2PO
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(FOK_USE_SENS_GRP)))
FOK_OPTION = -DFOK_USE_SENS
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MP3_CDG_GRP)))
USE_CDTEXT = -DCD_TEXT -DCDG -DMP3CDG -DVCD_MP3G
else
ifeq ($(GOAL),$(findstring $(GOAL),$(USE_CDTEXT_GRP)))
USE_CDTEXT = -DCD_TEXT -DCDG
endif
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(LC_CDG_ONLY_GRP)))
USE_CDTEXT = -DCDG -DDEMUX_ON_FLY
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(OPEN_CLOSE_GRP)))
TRAY_STATUS = -DCOMMON_OPEN_CLOSE
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MONDENA_GRP)))
SCLK_OPTION = -DSCLK_USE_AUX
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MARANELLO_GRP)))
SCLK_OPTION = -DSCLK_USE_AUX
endif
CXD_FLAGS = -DCXD3068 -DSKIP_AGT -DSKIP_AGF
ifeq ($(GOAL),$(findstring $(GOAL),$(CXD3059_GRP)))
CXD_FLAGS = -DCXD3059 -DSKIP_AGF -DMCLK_FOR_SERVO -DPOWER_NOISE_MUTE
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(CXD3008_GRP)))
CXD_FLAGS = -DCXD3008 -DSKIP_AGT -DSKIP_AGF
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(CXD3068_GRP)))
CXD_FLAGS = -DCXD3068 -DSKIP_AGT -DSKIP_AGF
endif
SERVOFLAGS =
ifeq ($(GOAL),$(findstring $(GOAL),$(REL_SEGMENT_GRP)))
SERVOFLAGS = -DRELEASE -DSERVO -DCXDSERVO $(USE_CDTEXT)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_DSA_GRP)))
SERVOFLAGS = $(USE_C2PO)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SONY_SERVO_GRP)))
SERVOFLAGS = -DSERVO -DCXDSERVO -DDSC_ENABLE_S0S1 \
$(CXD_FLAGS) $(USE_C2PO) $(SONY_3DISC) \
$(TRAY_STATUS) $(FOK_OPTION) $(USE_CDTEXT) \
$(SCLK_OPTION)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MATSUSHITA_SERVO_GRP)))
SERVOFLAGS = -DSERVO -DMSERVO -DDSC_ENABLE_S0S1 -DSONY_213C -DAN22002 \
$(TRAY_STATUS) $(USE_CDTEXT) -DMCLK_FOR_SERVO
#-DSAMSUNG_B31 -DAN8849 -DCTRL_UND
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(TOSHIBA_SERVO_GRP)))
SERVOFLAGS = -DTCSERVO $(USE_CDTEXT)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SAMSUNG_SERVO_GRP)))
SERVOFLAGS = -DSERVO -DSAM_SRV -DDSC_ENABLE_S0S1 $(USE_C2PO) \
$(TRAY_STATUS) $(USE_CDTEXT) -DMCLK_FOR_SERVO
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(ESS3721_SERVO_GRP)))
SERVOFLAGS = -DSERVO -DESS3721 $(USE_CDTEXT) $(USE_C2PO) \
-DMCLK_FOR_SERVO
ifeq ($(GOAL),$(findstring $(GOAL),$(USE_CDTEXT_GRP) $(LC_CDG_ONLY_GRP)))
SERVOFLAGS += -DDSC_ENABLE_S0S1
endif
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_CD7_SERVO_GRP)))
SERVOFLAGS = -DSERVO -DCD7II $(USE_C2PO)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(GDT3000_SERVO_GRP)))
SERVOFLAGS = -DGDTSERVO $(USE_CDTEXT) $(USE_C2PO) -DUSE_SERVO_INT
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SILAN_SERVO_GRP)))
SERVOFLAGS = $(USE_C2PO) -DMCLK_FOR_SERVO -DSILAN_SERVO
endif
# Play-only CD data format..use SERVOFLAGS
ifeq ($(GOAL),$(findstring $(GOAL),$(SONY_FORMAT_GRP)))
SERVOFLAGS = -DSONY_CD_FORM
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(TOSHIBA_FORMAT_GRP)))
SERVOFLAGS = -DTOSHIBA_CD_FORM
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_FORMAT_GRP)))
SERVOFLAGS = -DPHILIPS_CD_FORM
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SANYO_FORMAT_GRP)))
SERVOFLAGS = -DSANYO_CD_FORM
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MATSUSHITA_FORMAT_GRP)))
SERVOFLAGS = -DMATSUSHITA_CD_FORM
endif
#
# Audio/video encoder set up
#
ENCODERFLAGS = $(ES3881) $(ES3207A) $(ES3986)
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3880_3881AV_GRP)))
ENCODERFLAGS = $(ES3881) $(ES3207A) $(ES3210E)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_PCM1710_GRP)))
ENCODERFLAGS = $(ES3890) $(PCM1710)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_PCM1717_GRP)))
ENCODERFLAGS = $(ES3890) $(PCM1717)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_PCM1718_GRP)))
ENCODERFLAGS = $(ES3890) $(PCM1718)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_PCM1725_GRP)))
ENCODERFLAGS = $(ES3890) $(PCM1725)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_ESS3721_GRP)))
ENCODERFLAGS = $(ES3890) $(ES3721A)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_TC9434A_GRP)))
ENCODERFLAGS = $(ES3890) $(TC9434AFN)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_PCM9290_GRP)))
ENCODERFLAGS = $(ES3890) $(PCM9290)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_MN662790_GRP)))
ENCODERFLAGS = $(ES3890) $(MN662790)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_CXD3059_GRP)))
ENCODERFLAGS = $(ES3890) $(CXD3059A)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(COMBO_3890_SILAN_GRP)))
ENCODERFLAGS = $(ES3890) $(SILANSC9645)
endif
#
# CPU clock
#
CLK = -DCPUCLK=675 # 67.5 MHz
ifeq ($(GOAL),$(findstring $(GOAL),$(CPUCLK_675_GRP)))
CLK = -DCPUCLK=675 # 67.5 MHz
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(CPUCLK_810_GRP)))
CLK = -DCPUCLK=810 # 81 MHz
endif
#
# Version control defines
#
SCCSGET = sccsget
SOURCES = sources.nam
GETVER = getver.awk
#FAST_BUT_BIG = -DUCODE_IN_DRAM -DWAIT_HD_FIFO_USE_MACRO \
# -DBUSCON_IRQ_USE_MACRO
#
# Target specific flags
# (refer to other flags in make.sh)
#
ifeq ($(GOAL),$(findstring $(GOAL),$(VCD20_GRP)))
DFLAGS = $(NEW20ROM) $(MP3TRICK) \
$(WMATRICK) $(JPEGTRICK) $(GBTRICK) \
$(ROMTRICK) $(DATA_CD_TRICK)
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PLAYONLY_GRP)))
DFLAGS = $(PLAYER11ROM) $(ROMTRICK) -DP4O
endif
#
# LC slow (non-cacheable) segment
#
RDSA_SUN =
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP) $(POLC_GRP)))
RDSA_SUN = rdsa.sun
endif
#
# MP3 source code if MP3 in demux, otherwise..
# "MP3_CORE" will be empty (by "MP3_XSEG_GRP" targets below)
#
MP3_CORE = $(MP3_SRC)
#
# XTRA_SEGn (jpeg, gameboy, etc..)
#
ifeq ($(GOAL),$(findstring $(GOAL),$(JPEG_GRP)))
JPEG_CORE = $(JPEG_C1) $(JPEGLIB_C1)
XTRA1_SUN = xtra_s1.sun
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(GAMEBOY_GRP)))
GB_CORE = $(GAME_SRC)
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP)))
GB_CORE = $(LCGAME_SRC)
endif
XTRA2_SUN = xtra_s2.sun
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(GM_EM_GRP)))
GB_CORE = $(GAME_SRC)
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP)))
GB_CORE = $(LCGAME_SRC)
endif
GAME_SUN = game_s.sun
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(WMA_GRP)))
WMA_CORE = $(WMA_SRC)
XTRA3_SUN = xtra_s3.sun
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MP3_XSEG_GRP)))
MP3_CORE =
MP3_XCORE = $(MP3_SRC)
XTRA4_SUN = xtra_s4.sun
endif
XTRA_SEG1 = $(JPEG_CORE:.c=.o)
XTRA_SEG2 = $(GB_CORE:.c=.o)
XTRA_SEG3 = $(WMA_CORE:.c=.o)
XTRA_SEG4 = $(MP3_XCORE:.c=.o)
#
# WMA table..for mktable
#
WMA_TAB =
ifeq ($(GOAL),$(findstring $(GOAL),$(WMA_GRP)))
WMA_TAB = wma/wma_tab.c
endif
#
# files dependent on LC or full-featured options
#
OSD_SRC = cg.c osd.c eq.c nav_menu.c
OSD_DATA = font.h font2032.c icon.c eq_font.c osdmsg.c \
icondata.c vwefont.c
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP) $(POLC_GRP)))
OSD_SRC = osdcore.c
OSD_SLOWSRC = lc_eq.c fsosd.c lc_menu.c
OSD_DATA = font.h lcfont.h font2416.c osdmsg.c
endif
# Font compression
#MKTBL_OBJ = vwcomp.o gzip.a
# New PC tools (ESSXP)
MKTBL_OBJ = vwcomp.xo gzip.xa
#
# CDG and CD-TEXT source
#
CDGT_SRC =
ifeq ($(GOAL),$(findstring $(GOAL),$(USE_CDTEXT_GRP) $(LC_CDG_ONLY_GRP)))
CDGT_SRC = cd_text.c cdg.c
endif
#
# Servo code
#
CXDCORE = cxd3068.c
ifeq ($(GOAL),$(findstring $(GOAL),$(CXD3008_GRP)))
CXDCORE = cxd3008.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(CXD3059_GRP)))
CXDCORE = cxd3059.c
endif
SERVO_CORE = servos.c cxd3008.c cxd3068.c cxd3059.c servom.c servok.c \
servop.c servot.c servoe.c servogdt.c servosl.c
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_DSA_GRP) $(PLAYONLY_GRP)))
SERVO_CORE =
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SONY_SERVO_GRP)))
SERVO_CORE = servos.c $(CXDCORE) time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(ESS3721_SERVO_GRP)))
SERVO_CORE = servoe.c time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MATSUSHITA_SERVO_GRP)))
SERVO_CORE = servom.c time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SAMSUNG_SERVO_GRP)))
SERVO_CORE = servok.c samsung.o time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_CD7_SERVO_GRP)))
SERVO_CORE = servop.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(TOSHIBA_SERVO_GRP)))
SERVO_CORE = servot.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(GDT3000_SERVO_GRP)))
SERVO_CORE = servogdt.c time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL), $(SILAN_SERVO_GRP)))
SERVO_CORE = servosl.c
endif
# begin MPEG1SLOW...
# Play control and various non-time-critical code.
ifeq ($(GOAL),$(findstring $(GOAL),$(REL_SEGMENT_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsas.c plays.c slave.c time1int.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SONY_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsas.c plays.c slave.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_DSA_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsa.c play.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(ESS3721_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsae.c plays.c slave.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(MATSUSHITA_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsas.c plays.c slave.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SAMSUNG_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsak.c plays.c slave.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PHILIPS_CD7_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) cdctl.c cd7.c play.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(TOSHIBA_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) tcservo.c playt.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(GDT3000_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) gdtservo.c plays.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(PLAYONLY_GRP)))
PLAY_CONTROL = $(PLAYER11SRC) po4tact.c
endif
ifeq ($(GOAL),$(findstring $(GOAL),$(SILAN_SERVO_GRP)))
PLAY_CONTROL = $(PLAYER20SRC) dsasl.c plays.c slave.c
endif
MPEG1SLOW = dentry1.o $(PLAY_CONTROL:.c=.o) $(MVDSLOWSRC:.c=.o)
#
# Cachable (MPEG1FAST) and non-cachable (MPEG1SLOW) regions
#
# NOTE: for Full-Featured targets, all code will run from DRAM, i.e.
# all "MPEG1FAST".
#
MPEG1FAST = $(MPEG1SLOW) \
$(MUSICAMSRC:.c=.o) $(MPEG1SRC:.c=.o) $(MVDSRC:.c=.o) \
$(MP3_CORE:.c=.o)
#
# source groupings for LC targets
#
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP) $(POLC_GRP)))
MPEG1FAST = $(MUSICAMSRC:.c=.o) $(MPEG1SRC:.c=.o) $(MVDSRC:.c=.o) \
$(MP3_CORE:.c=.o)
endif
#
# Start file
#
# start file for WMA_CERT
#START_FILE = prstart.o
#
# Library file
#
LIB_FILE = $(LIBC)/libc.a
# Library file for WMA_CERT
#LIB_FILE = $(LIBC1)/prlibc.a
include $(MAKE_EXT)
#
# Flags for genprof
#
PROFFLAGS = -DCOMPRESS
ifeq ($(GOAL),$(findstring $(GOAL),$(VCDLC_GRP) $(POLC_GRP)))
PROFFLAGS = -DCODE_IN_ROM
endif
#
# Make automatically-generated files
#
DATAFILE = const.dat
const.dat const.h init_t.c reg_vpuc.h: mktable
mktable
mktable: mktable.c wj.h hufftab.h xpucode.h audio.h $(VPUCODEH) \
$(OSD_DATA) bcdhex.c e1logo.c gbtables.h dgs_fnt.c \
irkey.c custfilt.c tdm.h misctbl.c common.h cdtbl.c \
$(MKTBL_OBJ) servocmd.c gdt_cmd.c keydef.h vfdshare.h \
mp3audio.h $(VFDSPEC_C) memmap.h huffcode.h $(SERVO_H) \
servop.h gammaval.h mp3logo.c $(WMA_TAB)
$(GCC) $(DFLAGS) $(ENCODERFLAGS) $(SYSOPTIONS) $(CLK) \
-DFAKE $(VCD20STACK) mktable.c $(MKTBL_OBJ) \
-o mktable
$(COFF2EXE) mktable
#
# Generate ROM profile:
# 1) compressed code in ROM, run code from DRAM..for full-feature 2MB dram
# 2) code running from ROM(except extra segments)..for LC-feature set
#
profile: genprof
genprof $(ROMSIZE) > profile
genprof: genprofz.c version.h
$(GCC) $(PROFFLAGS) $(DFLAGS) $(ENCODERFLAGS) $(SYSOPTIONS) \
$(VCD20STACK) -o genprof genprofz.c
$(COFF2EXE) genprof
#
# Generate startup code
#
startup1.s: startup.s
$(SED) 's/_MEMDELAYL_/$(MEMDELAYL)/g' $(STARTUP_S) > temp1.sss
$(SED) 's/_MEMDELAYH_/$(MEMDELAYH)/g' temp1.sss > temp2.sss
$(SED) 's/_DRAM_CONTROL_/$(DRAM_CONTROL)/g' temp2.sss > temp1.sss
$(SED) 's/_BIG_MEM_BIT_/$(BIG_MEM_BIT)/g' temp1.sss > startup1.s
$(RM) temp1.sss temp2.sss
$(AX) -R startup1.s
dentry1.s: dentry.s
$(SED) 's/_STACKBASE_/$(STACKBASE)/g' dentry.s > temp1.sss
$(SED) 's/_ADJUST_STACK_/$(ADJUST_STACK)/g' temp1.sss > temp2.sss
$(CPP) -P $(BF_FLAGS) $(WMAFLAGS) temp2.sss > dentry1.s
$(RM) temp1.sss temp2.sss
$(AX) -R dentry1.s
boot: startup1.s
$(AX) -R startup1.s
$(LD) -Ttext $(BOOT_START) -e powerup -X -o boot startup1.o
#
# make rom loader batch file: rom.bat
#
romload: romload.c
$(GCC) $(PROFFLAGS) $(DFLAGS) $(ENCODERFLAGS) $(SYSOPTIONS) \
-DFAKE $(VCD20STACK) romload.c -o mkrombat
$(COFF2EXE) mkrombat
#
# Make the VCD targets..
#
$(PLAY_TARGETS_GRP): ldfile $(RDSA_SUN) demux.sun $(XTRA1_SUN) $(XTRA2_SUN) \
$(XTRA3_SUN) $(XTRA4_SUN) boot profile runrld romload
$(RUNRLD) $(RLD) $(ROMBASE) $(DATA_START) demux.sun \
$(RDSA_SUN) $(XTRA1_SUN) $(XTRA2_SUN) $(XTRA3_SUN) \
$(XTRA4_SUN)
$(ECHO) make $@ > stat
$(ROM) -s $(STACKBASE) profile >> stat
$(BIND) svcd bank30.rom 1d000000 > stat1
$(MKROMBAT)
$(GAME_SEGMENT_GRP): $(GAME_SUN) boot profile.gm
$(RLD) -r $(ROMBASE) -Ttext1 R22 \
-Tdata1 R25 00 -w $(GAME_SUN)
$(ECHO) make $@ > stat.gm
$(ROM) -s $(STACKBASE) profile.gm>> stat.gm
$(REL_SEGMENT_GRP): demux.rrr boot profile
.SECONDARY: $(MVDSRC) $(MVDSRC:.c=.h)\
$(JPEG_C1) $(JPEG_C1:.c=.h)\
$(JPEGLIB_C1) $(JPEGLIB_C1:.c=.h)\
$(GAME_SRC_R) $(GAME_SRC_R:.c=.h)\
$(GAME_SRC) $(GAME_SRC:.c=.h) \
$(LCGAME_SRC_R) $(LCGAME_SRC_R:.c=.h)\
$(LCGAME_SRC) $(LCGAME_SRC:.c=.h) \
$(WMA_SRC) $(WMA_SRC:.c=.h)\
$(MP3_SRC) $(MP3_SRC:.c=.h) \
$(MPEG1SRC) $(MPEG1SRC:.c=.h)\
$(PLAY_CONTROL) $(PLAY_CONTROL:.c=.h) \
$(VFDSPEC_C) \
$(MUSICAMSRC) \
$(PROTECT) $(PROTECT:.c=.h) \
$(OTHER_C1) $(OTHER_C1:.c=.h) \
$(OTHER_C2) $(OTHER_C2:.c=.h) \
$(OTHER_C3) $(OTHER_C3:.c=.h) \
$(OTHER_C4) $(OTHER_C4:.c=.h) \
$(OTHER_C5) $(OTHER_C5:.c=.h)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -