Я использую Raspbian на Raspberry Pi 4 и хочу внести изменения в открытый исходный код. Проект довольно большой и поставляется с Makefile. Я делаю изменения в исходном коде, используя Geany. Затем я снова запускаю Makefile, который, как мне кажется, компилирует каждый файл в проекте. Это занимает довольно много времени. Так, например, если я буду sh вставлять оператор print в функцию, чтобы посмотреть, что происходит, мне придется перекомпилировать весь проект? Должен быть более эффективный способ отладки кода C ++, чем этот.
На протяжении моей степени я прошел несколько классов программирования, но ни один из них не был основан на Linux, и вся курсовая работа содержалась в среде IDE. Я также подозреваю, что многие из моих подходов не могут быть типичными или оптимальными при программировании. Любая помощь очень ценится.
Спасибо, Кевин
РЕДАКТИРОВАТЬ - Включая make file:
ifndef CONFIG
CONFIG=Release
endif
ifndef LIBDIR
LIBDIR=/usr/lib/
endif
DPKG := $(shell dpkg-buildflags --version 2> /dev/null)
ifdef DPKG
DEB_BUILD_MAINT_OPTIONS = hardening=+all
SDEBCXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
SDEBLDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow
PDEBCXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
PDEBLDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
endif
MACHINE := $(shell sh -c 'uname -m 2> /dev/null || echo not')
ifneq (,$(findstring aarch,$(MACHINE)))
SIMDFLAGS := -march=armv8-a -mtune=cortex-a53
else
ifneq (,$(findstring arm,$(MACHINE)))
SIMDFLAGS := -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
else
SIMDFLAGS := -msse2
endif
endif
PROGRAM = helm
BIN = $(DESTDIR)/usr/bin
BINFILE = $(BIN)/$(PROGRAM)
LV2 = $(DESTDIR)/$(LIBDIR)/lv2/$(PROGRAM).lv2
VSTDIR = $(DESTDIR)/$(LIBDIR)/lxvst
VST = $(VSTDIR)/$(PROGRAM).so
SYSDATA = $(DESTDIR)/usr/share/$(PROGRAM)
IMAGES = $(SYSDATA)/icons
PATCHES = $(SYSDATA)/patches
MAN = $(DESTDIR)/usr/share/man/man1/
CHANGES = $(DESTDIR)/usr/share/doc/$(PROGRAM)/
DESKTOP = $(DESTDIR)/usr/share/applications/
ICONS = $(DESTDIR)/usr/share/icons/hicolor/
ICON16 = images/helm_icon_16_1x.png
ICON22 = images/helm_icon_22_1x.png
ICON24 = images/helm_icon_24_1x.png
ICON32 = images/helm_icon_32_1x.png
ICON48 = images/helm_icon_48_1x.png
ICON64 = images/helm_icon_32_2x.png
ICON128 = images/helm_icon_128_1x.png
ICON256 = images/helm_icon_256_1x.png
ICONDEST16 = $(ICONS)/16x16/apps
ICONDEST22 = $(ICONS)/22x22/apps
ICONDEST24 = $(ICONS)/24x24/apps
ICONDEST32 = $(ICONS)/32x32/apps
ICONDEST48 = $(ICONS)/48x48/apps
ICONDEST64 = $(ICONS)/64x64/apps
ICONDEST128 = $(ICONS)/128x128/apps
ICONDEST256 = $(ICONS)/256x256/apps
all: standalone lv2 vst
install_icons:
install -d $(ICONDEST16) $(ICONDEST22) $(ICONDEST24) $(ICONDEST32)
install -d $(ICONDEST48) $(ICONDEST64) $(ICONDEST128) $(ICONDEST256)
cp $(ICON16) $(ICONDEST16)/$(PROGRAM).png
cp $(ICON22) $(ICONDEST22)/$(PROGRAM).png
cp $(ICON24) $(ICONDEST24)/$(PROGRAM).png
cp $(ICON32) $(ICONDEST32)/$(PROGRAM).png
cp $(ICON48) $(ICONDEST48)/$(PROGRAM).png
cp $(ICON64) $(ICONDEST64)/$(PROGRAM).png
cp $(ICON128) $(ICONDEST128)/$(PROGRAM).png
cp $(ICON256) $(ICONDEST256)/$(PROGRAM).png
standalone:
$(MAKE) -d -C standalone/builds/linux CONFIG=$(CONFIG) DEBCXXFLAGS="$(SDEBCXXFLAGS)" DEBLDFLAGS="$(SDEBLDFLAGS)" SIMDFLAGS="$(SIMDFLAGS)"
lv2:
$(MAKE) -C builds/linux/LV2 CONFIG=$(CONFIG) DEBCXXFLAGS="$(PDEBCXXFLAGS)" DEBLDFLAGS="$(PDEBLDFLAGS)" SIMDFLAGS="$(SIMDFLAGS)"
vst:
$(MAKE) -C builds/linux/VST CONFIG=$(CONFIG) DEBCXXFLAGS="$(PDEBCXXFLAGS)" DEBLDFLAGS="$(PDEBLDFLAGS)" SIMDFLAGS="$(SIMDFLAGS)"
clean:
$(MAKE) clean -C standalone/builds/linux CONFIG=$(CONFIG)
$(MAKE) clean -C builds/linux/LV2 CONFIG=$(CONFIG)
$(MAKE) clean -C builds/linux/VST CONFIG=$(CONFIG)
install_patches:
rm -rf $(PATCHES)
install -d $(PATCHES)
cp -rf patches/* $(PATCHES)
install_standalone: standalone install_patches install_icons
install -d $(BIN) $(IMAGES) $(MAN) $(CHANGES) $(DESKTOP)
install standalone/builds/linux/build/$(PROGRAM) $(BIN)
install -m644 standalone/helm.desktop $(DESKTOP)/helm.desktop
install -m644 images/* $(IMAGES)
cp changelog changes
gzip -n -9 changelog
mv changes changelog
mv changelog.gz $(CHANGES)/changelog.gz
cp docs/helm.1.gz $(MAN)
install_lv2: lv2 install_patches
install -d $(PATCHES) $(LV2)
install -m644 builds/linux/LV2/helm.lv2/* $(LV2)
cp -rf patches/* $(PATCHES)
install_vst: vst install_patches
install -d $(PATCHES) $(VSTDIR)
install builds/linux/VST/build/helm.so $(VST)
cp -rf patches/* $(PATCHES)
thank_you:
ifdef PAID
install -d $(PATCHES)
cp docs/thank_you.txt $(PATCHES)
endif
install: install_standalone install_vst install_lv2 thank_you
dist:
rm -rf $(PROGRAM)
mkdir $(PROGRAM)
-cp -rf * $(PROGRAM)/
$(MAKE) clean -C $(PROGRAM) CONFIG=Release
$(MAKE) clean -C $(PROGRAM) CONFIG=Debug
rm -rf $(PROGRAM)/.git
rm -rf $(PROGRAM)/JUCE/extras
rm -rf $(PROGRAM)/JUCE/examples
rm -rf $(PROGRAM)/builds/osx
rm -rf $(PROGRAM)/builds/vs12
rm -rf $(PROGRAM)/builds/vs15
rm -rf $(PROGRAM)/standalone/builds/osx
rm -rf $(PROGRAM)/standalone/builds/vs12
rm -rf $(PROGRAM)/standalone/builds/vs15
tar -cvzf $(PROGRAM).tar.gz $(PROGRAM)
rm -rf $(PROGRAM)
uninstall:
rm -rf $(LV2)
rm -rf $(VST)
rm -rf $(SYSDATA)
rm -rf $(BINFILE)
rm $(ICONDEST16)/$(PROGRAM).png
rm $(ICONDEST22)/$(PROGRAM).png
rm $(ICONDEST24)/$(PROGRAM).png
rm $(ICONDEST32)/$(PROGRAM).png
rm $(ICONDEST48)/$(PROGRAM).png
rm $(ICONDEST64)/$(PROGRAM).png
rm $(ICONDEST128)/$(PROGRAM).png
rm $(ICONDEST256)/$(PROGRAM).png
.PHONY: standalone