初学者在ios中使用assimp

时间:2012-11-01 02:30:33

标签: ios opengl-es

我想在即将到来的ios项目中使用Assimp但是很难让它工作。我按照这个说明进行了说明:

How to build ASSIMP Library for iOS (Device and Simulator) with boost-library?

但终端一直告诉我这个:

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项目中吗?

  3. 我想要做的是导入一些.blend文件然后我可以在着色器和其他很酷的东西上进行实验。

    我是体面的ios开发人员,对OpenGL ES有基本的了解。不知怎的,Assimp文件让我对它的作用感到困惑。如果我不了解Assimp在核心概念级别或编程级别,我不太确定。但我仍然相信它非常灵活和强大。

    感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

我猜你正在使用“buil_ios.sh”脚本,在那个脚本中有一些错误。

您应首先从Cmake Download

下载Cmake

安装Cmake,然后执行以下操作。

首先,我认为除了输出之外,您还会收到一些消息,告诉您您在Cmake中放置的某些选项未被使用。那是因为在脚本中,一些变量的名称写得不好。

除此之外,您应该更改CMakeLists.txt文件,以便在尝试构建库时不会出错:

在此定义所需参数

set(ASSIMP_SV_REVISION 1023)< - 它应该小于1024。

设置(ASSIMP_VERSION $ {ASSIMP_VERSION_MAJOR})< - 在这里您可以找到一些像这样的参数。 (parameter0)。(参数1)... Mac OS不喜欢使用这个命名法来命名:parameter0.parameter1.paramter.2.a我想这是因为'。'。

经过漫长的一天后,我终于设法建立了这个库。另一种选择是让库从项目编制了openFrameworks,它的这个路径:“/addons/ofxAssimpModelLoader/libs/assimp/lib/ios/assimp.a”

Here you have a link to the library

在那里你可以找到已经为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

答案 1 :(得分:1)

我在某处读到了另一种选择,即使用openframeworks,因为它已经包含了assimp lib。

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

寻找ios版本。并且里面有一个包含example / ios / assimpExample /文件夹的文件夹将是一个很好的起点。

玩得开心!:D

答案 2 :(得分:0)

使用最新版本的Homebrew在Mac上为我提供的增强功能如下:

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

您的增强版本可能会有所不同,因此最后一个文件夹会有所不同。但是,从最近的自制软件版本开始,Cellar将在当前用户的主目录中安装。