Я хочу изменить свой файл Makefile для создания файлов cpp и mm, так как я только что начал добавлять код Objective-C в свой проект. Это Makefile я в настоящее время:Изменить правила сборки в Makefile для создания нескольких типов файлов
# Name of the project being built
PROJECT := modpe
# Name of process the tweak is loaded into
PROCESS := minecraftpe
# Local IP Address of device to SSH into
DEVICE := ryans-ipod-touch.local
# Path of the SDK on MacOS
SDKPATH := /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
# Build using libc++ and C++11 support
override CXXFLAGS += -stdlib=libc++ -std=c++11 -miphoneos-version-min=7.0 -isysroot $(SDKPATH)
override LDFLAGS += -stdlib=libc++ -std=c++11 -miphoneos-version-min=7.0 -isysroot $(SDKPATH)
# Names of the tweak library, substrate filter, and debian package
TWEAK := $(PROJECT).dylib
FILTER := $(PROJECT).plist
DEB := $(PROJECT).deb
# Directory for build products like executables, object files, and dependency files
BUILD := build
# Directory for debian package filesystem layout
LAYOUT := layout
# Directory for temporary staging of the debian package structure while creating the package
STAGING := $(BUILD)/deb
SUBSTRATE := $(STAGING)/Library/MobileSubstrate/DynamicLibraries
# Name of the unstripped version
UNSTRIPPED := $(BUILD)/$(TWEAK:.dylib=_unstripped.dylib)
# List of source files and their corresponding object file paths
SRCS := $(shell find . -type f -name '*.cpp')
OBJS := $(addprefix $(BUILD)/,$(SRCS:.cpp=.o))
# Supported architectures
ARCHS := arm64
ARCHFLAGS := $(addprefix -arch ,$(ARCHS))
# Frameworks for linking
FRAMEWORKS := CydiaSubstrate Forklift
override LDFLAGS += $(addprefix -framework ,$(FRAMEWORKS))
# Compiler and linker
CLANG := clang $(ARCHFLAGS)
CLANGXX := clang++ $(ARCHFLAGS)
CC := $(CLANG)
CXX := $(CLANGXX)
LD := $(CLANGXX)
STRIP := strip
# When invoked as "make VERBOSE=1", every command gets printed as it runs
ifdef VERBOSE
_v :=
else
_v := @
endif
### Build rules ###
all: $(TWEAK)
.PHONY: all
$(TWEAK): $(UNSTRIPPED)
@echo 'Strip [email protected]'
$(_v)$(STRIP) -x -o [email protected] $<
%.dylib: $(OBJS)
@echo 'Link [email protected]'
$(_v)$(LD) $(LDFLAGS) -dynamiclib -o [email protected] $^
%.cpp: $(BUILD)/%.d
$(BUILD)/%.o: %.cpp | $(BUILD)/.dir
@echo 'Compile [email protected]'
$(_v)$(CXX) $(CXXFLAGS) -MD -MF $(BUILD)/$*.d -c -o [email protected] $<
.SECONDARY: $(BUILD)/.dir
-include $(BUILD)/*.d
### Package rules ###
package: $(DEB)
.PHONY: package
$(DEB): $(TWEAK) $(FILTER)
@echo 'Stage [email protected]'
$(_v)rm -rf $(STAGING)
$(_v)mkdir -p $(STAGING)
$(_v)cp -R $(LAYOUT)/* $(STAGING)
$(_v)mkdir -p $(SUBSTRATE)
$(_v)cp $^ $(SUBSTRATE)
$(_v)chown -R root:wheel $(STAGING)
$(_v)chmod 0755 $(SUBSTRATE)/$(TWEAK)
$(_v)chmod 0644 $(SUBSTRATE)/$(FILTER)
@echo 'Package [email protected]'
$(_v)dpkg-deb -Zgzip -b $(STAGING) [email protected]
$(_v)rm -rf $(STAGING)
### Install rules ###
install: $(DEB)
@echo 'Install $(DEB)'
scp $(DEB) [email protected]$(DEVICE):/var/tmp/
@echo ‘Run dpkg -i /var/tmp/$(DEB) to install.’
ssh [email protected]$(DEVICE)
.PHONY: install
### Offline install rules ###
offline:
@echo 'No WiFi to SSH: Using afc instead'
$(_v)sudo afc/afcclient put ./modpe.deb /modpe.deb
.PHONY: offline
### Clean rules ###
clean:
@echo 'Remove $(BUILD)'
$(_v)rm -rf $(BUILD)
.PHONY: clean
### General rules ###
%/.dir:
@echo 'Create directory $*/'
$(_v)mkdir -p $* && touch [email protected]
# deploys test script
deploy: $(OFFLINE)
scp scripts/script.js [email protected]$(DEVICE):/var/mobile/modpe/
.PHONY: deploy
До сих пор единственное, что я знаю, чтобы изменить это SRCS линия:
SRCS := $(shell find -E . -regex “.*\.\(cpp\|mm\)”)
Мой вопрос, что еще я могу сделать, чтобы сделать эту сборку .mm исходных файлов с .cpp исходными файлами, а не игнорированием их?
Не могли бы вы привести пример как вы это сделали бы в командной строке, возможно, создав 'foo.mm' с' foo.cpp'? – Beta
Что вы имеете в виду? Это make-файл. Вы просто создаете его с помощью «make install install», и он ищет файлы для вас и строит/связывает их. Но сейчас он ищет только cpp, и я хочу, чтобы он также искал mm. –
Я думаю, что вижу проблему; вы неправильно используете язык. Я думаю, что смогу написать ответ. – Beta