новичок в использовании assimp в ios

Я хочу использовать Assimp в моем предстоящем проекте iOS, но мне трудно заставить его работать. Я следовал инструкциям из этого:

Как создать библиотеку ASSIMP для iOS (устройство и симулятор) с библиотекой boost?

Но Терминал продолжает говорить мне следующее:

rm: CMakeCache.txt: No such file or directory
/Users/hengchinsoon/Desktop/assimp/port/iOS/build_ios.sh: line 40: cmake: command not found
Building armv6 library
make: *** No rule to make target `clean'.  Stop.
make: *** No rule to make target `assimp'.  Stop.
cp: ./lib/libassimp.a: No such file or directory
rm: CMakeCache.txt: No such file or directory
/Users/hengchinsoon/Desktop/assimp/port/iOS/build_ios.sh: line 51: cmake: command not found
Building armv7 library
make: *** No rule to make target `clean'.  Stop.
make: *** No rule to make target `assimp'.  Stop.
cp: ./lib/libassimp.a: No such file or directory
rm: CMakeCache.txt: No such file or directory
/Users/hengchinsoon/Desktop/assimp/port/iOS/build_ios.sh: line 62: cmake: command not found
Building i386 library
make: *** No rule to make target `clean'.  Stop.
make: *** No rule to make target `assimp'.  Stop.
cp: ./lib/libassimp.a: No such file or directory
rm: ./lib/libassimp.a: No such file or directory

Итак, я проверил корневую папку assimp и обнаружил, что там нет папки lib (которая из описаний github, то есть для использования Windows). Поэтому я просто создал папку lib и повторил попытку. Но все еще не работает.

  1. Может ли кто-нибудь поделиться со мной, какую часть я сделал неправильно? Спасибо!

  2. Скажите, если я успешно установлю все, что мне нужно для установки, то как на самом деле использовать библиотеку? Должен ли я копировать папку lib/ios/ в свои проекты ios?

Что я хочу сделать, так это импортировать несколько файлов .blend, после чего я смогу поэкспериментировать с шейдером и другими интересными вещами.

Я приличный разработчик iOS и имею базовое понимание OpenGL ES. Каким-то образом документ Assimp сбил меня с толку тем, что он делает. Я не уверен, не понимаю ли я Assimp на уровне базовой концепции или на уровне программирования. Но я все еще убежден, что он очень гибкий и мощный.

Спасибо за помощь.


person sooon    schedule 01.11.2012    source источник


Ответы (3)


Я предполагаю, что вы используете скрипт "buil_ios.sh", в этом скрипте есть несколько ошибок.

Сначала вы должны загрузить Cmake из: Cmake Download

Установите Cmake и выполните следующие действия.

Прежде всего, я думаю, что помимо этого вывода вы получаете сообщение о том, что некоторые параметры, которые вы указали в Cmake, не используются. Это потому, что в скрипте неправильно прописаны названия некоторых переменных.

Кроме того, вы должны изменить файл CMakeLists.txt, чтобы не получить ошибку при попытке собрать библиотеку:

Определите здесь необходимые параметры

set (ASSIMP_SV_REVISION 1023) ‹-- Должно быть меньше 1024.

set (ASSIMP_VERSION ${ASSIMP_VERSION_MAJOR}) ‹ -- здесь вы найдете некоторые подобные параметры. (параметр0).(параметр1)... Mac OS не любит ставить имена, используя эту номенклатуру: параметр0.параметр1.параметр.2.a Я думаю, это из-за '.'.

Итак, после долгого дня мне наконец удалось собрать библиотеку. Другой вариант - получить библиотеку, скомпилированную из проекта openframeworks, путь к ней такой: "/addons/ofxAssimpModelLoader/libs/assimp/lib/ios/assimp.a"

Вот ссылка на библиотеку

Там вы можете найти уже скомпилированную библиотеку для архитектур arm6, arm7 и i386.

Я собираюсь поместить вам сценарий, измененный здесь.

#!/bin/sh
# build.sh

#######################
# BUILD ASSIMP for iOS and iOS Simulator
#######################

BUILD_DIR="./lib/ios"

IOS_BASE_SDK="5.0"
IOS_DEPLOY_TGT="3.2"

setenv_all()
{
    # Add internal libs
    export CFLAGS="$CFLAGS"
    export CPP="$DEVROOT/usr/bin/llvm-cpp-4.2"
    export CXX="$DEVROOT/usr/bin/llvm-g++-4.2"
    export CXXCPP="$DEVROOT/usr/bin/llvm-cpp-4.2"
    export CC="$DEVROOT/usr/bin/llvm-gcc-4.2"
    export LD=$DEVROOT/usr/bin/ld
    export AR=$DEVROOT/usr/bin/ar
    export AS=$DEVROOT/usr/bin/as
    export NM=$DEVROOT/usr/bin/nm
    export RANLIB=$DEVROOT/usr/bin/ranlib
    export LDFLAGS="-L$SDKROOT/usr/lib/"

    export CPPFLAGS=$CFLAGS
    export CXXFLAGS=$CFLAGS
}

setenv_arm6()
{
    unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
    export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
    export SDKROOT=$DEVROOT/SDKs/iPhoneOS$IOS_BASE_SDK.sdk
    export CFLAGS="-arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"
    setenv_all
    rm CMakeCache.txt
    cmake  -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_ARM6_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DBUILD_STATIC_LIB=ON -DASSIMP_BUILD_STATIC_LIB=ON
}

setenv_arm7()
{
    unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
    export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
    export SDKROOT=$DEVROOT/SDKs/iPhoneOS$IOS_BASE_SDK.sdk
    export CFLAGS="-arch armv7 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"
    setenv_all
    rm CMakeCache.txt
    cmake  -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_ARM7_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DBUILD_STATIC_LIB=ON -DASSIMP_BUILD_STATIC_LIB=ON
}

setenv_i386()
{
    unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
    export DEVROOT=/Developer/Platforms/iPhoneSimulator.platform/Developer
    export SDKROOT=$DEVROOT/SDKs/iPhoneSimulator$IOS_BASE_SDK.sdk
    export CFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT"
    setenv_all
    rm CMakeCache.txt
    cmake  -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_i386_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DBUILD_STATIC_LIB=ON -DASSIMP_BUILD_STATIC_LIB=ON
}

create_outdir()
{
    for lib_i386 in `find $BUILD_DIR/i386 -name "lib*\.a"`; do
        lib_arm6=`echo $lib_i386 | sed "s/i386/arm6/g"`
        lib_arm7=`echo $lib_i386 | sed "s/i386/arm7/g"`
        lib=`echo $lib_i386 | sed "s/i386\///g"`
        echo 'Creating fat binary...'
        lipo -arch armv6 $lib_arm6 -arch armv7 $lib_arm7 -arch i386 $lib_i386 -create -output $lib
    done
    echo 'Done! You will find the libaries and fat binary library in /lib/ios'
}
cd ../../

rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR/arm6 $BUILD_DIR/arm7 $BUILD_DIR/i386

setenv_arm6
echo 'Building armv6 library'
make clean
make assimp -j 8 -l
cp ./lib/libassimp.a $BUILD_DIR/arm6/

setenv_arm7
echo 'Building armv7 library'
make clean
make assimp -j 8 -l
cp ./lib/libassimp.a $BUILD_DIR/arm7/


setenv_i386
echo 'Building i386 library'
make clean
make assimp -j 8 -l
cp ./lib/libassimp.a $BUILD_DIR/i386/

rm ./lib/libassimp.a

create_outdir
person xinoman12    schedule 10.12.2012
comment
Привет, xinoman12, я шаг за шагом следовал твоей инструкции, но после установки (ASSIMP_VERSION ${ASSIMP_VERSION_MAJOR}) я не уверен, что делать. Я попытался открыть cmake и найти файл для запуска, но все файлы неактивны. что на самом деле делает cmake? Спасибо! - person sooon; 18.03.2013
comment
Я выясняю, как использовать cmake, но есть ошибка: «Не удалось найти PkgConfig (отсутствует: PKG_CONFIG_EXECUTABLE) Не удалось найти Boost Не удалось найти заголовочные файлы Boost. Установите BOOST_ROOT в корневой каталог, содержащий Boost, или BOOST_INCLUDEDIR в каталог, содержащий заголовки Boost. Ошибка CMake в CMakeLists.txt:83 (СООБЩЕНИЕ): библиотеки Boost (boost.org) не найдены. Вы можете собрать не повышающую версию Assimp с немного урезанной функциональностью, указав -DENABLE_BOOST_WORKAROUND=ON. Настройка не завершена, произошли ошибки!' Любая идея, как решить эту проблему? - person sooon; 18.03.2013
comment
Хорошо, я узнал проблему. Отсутствует файл повышения. Поэтому я должен установить ENABLE_BOOST_WORKAROUND = ON, чтобы не было проблем с созданием файла. - person sooon; 18.03.2013

Я где-то читал, что альтернативой этому является использование openframeworks, так как он уже включает assimp lib.

http://www.openframeworks.cc/download/

ищите версию ios. а внутри есть папка, содержащая example/ios/assimpExample/. Папка будет хорошей отправной точкой.

Веселись! :D

person sooon    schedule 26.03.2013

Корень повышения для меня на Mac с последней версией Homebrew выглядит следующим образом:

BOOST_ROOT=~/.homebrew/Cellar/boost/1.53.0

Ваша версия буста может отличаться, поэтому последняя папка будет отличаться. Но в последней доморощенной версии Cellar устанавливается в домашнем каталоге текущего пользователя.

person hrdwdmrbl    schedule 25.04.2013