Cómo usar J2ObjC con Make
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
A continuación, se muestra un archivo Make simple que demuestra cómo compilar con j2objc y j2objcc:
.SUFFIXES: .java .m
BUILD_DIR = build
SOURCE_DIR = src
# Change to where distribution was unzipped.
J2OBJC_DISTRIBUTION = /your/distribution/dir
J2OBJC = $(J2OBJC_DISTRIBUTION)/j2objc
J2OBJCC = $(J2OBJC_DISTRIBUTION)/j2objcc
OBJECTS = \
$(BUILD_DIR)/foo/MainClass.o \
$(BUILD_DIR)/foo/bar/Support.o \
$(BUILD_DIR)/foo/bar/Utils.o
OBJC_SOURCES = $(OBJECTS:.o=.m)
RESULT = mainclass
default: translate $(OBJECTS)
$(J2OBJCC) -o $(RESULT) $(OBJECTS)
translate: $(BUILD_DIR) $(OBJC_SOURCES)
clean:
@rm -rf $(RESULT) $(BUILD_DIR)
$(BUILD_DIR)/%.m $(BUILD_DIR)/%.h: $(SOURCE_DIR)/%.java
$(J2OBJC) -sourcepath $(SOURCE_DIR) -d $(BUILD_DIR) $?
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.m
$(J2OBJCC) -I$(BUILD_DIR) -c $? -o $@
$(BUILD_DIR):
@mkdir $(BUILD_DIR)
Esto funciona, pero la traducción es lenta porque cada archivo de origen se traduce por separado.
Al igual que javac, es más rápido traducir todos los archivos relacionados juntos, ya que se analiza el
la fuente solo se debe hacer una vez. Los siguientes cambios mejoran el tiempo de compilación de forma significativa:
JAVA_SOURCES = $(TMPDIR).sources.list
translate: pre_translate $(OBJC_SOURCES)
@if [ `cat $(JAVA_SOURCES) | wc -l` -ge 1 ] ; then \
$(J2OBJC) -sourcepath $(SOURCE_DIR) -d $(BUILD_DIR) \
`cat $(JAVA_SOURCES)` ; \
fi
pre_translate: $(BUILD_DIR)
@rm -f $(JAVA_SOURCES)
@touch $(JAVA_SOURCES)
$(BUILD_DIR)/%.m $(BUILD_DIR)/%.h: $(SOURCE_DIR)/%.java
@echo $? >> $(JAVA_SOURCES)
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-07-25 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-25 (UTC)"],[[["\u003cp\u003eThis Makefile utilizes j2objc and j2objcc to translate Java source code into Objective-C for building iOS applications.\u003c/p\u003e\n"],["\u003cp\u003eInitially, translation is slow due to individual file processing, leading to redundant parsing.\u003c/p\u003e\n"],["\u003cp\u003eOptimization is achieved by translating all related files together, significantly improving build time.\u003c/p\u003e\n"],["\u003cp\u003eThe Makefile includes rules for generating object files, linking them, and cleaning the build directory.\u003c/p\u003e\n"],["\u003cp\u003eThe second Makefile example uses a temporary file to collect all java sources to be compiled together by j2objc to speed up the process.\u003c/p\u003e\n"]]],[],null,[]]