23

ビルド ツールとして CMake を使用して C++ スタティック ライブラリをコンパイルしました。これを iOS アプリにリンクしたいと考えています。
Xcode で単純な「空の」アプリケーションを作成し、libengine.a というライブラリをそれにリンクしました。
iOS プロジェクトをコンパイルしようとしたところ、リンカから次の警告が表示されました。

ignoring file /Users/.../build/engine/libengine.a, 
file was built for archive which is not the architecture being linked (i386):
/Users/.../build/engine/libengine.a

私が理解しているように、ARM プロセッサ用にライブラリをコンパイルする必要があります。問題は、方法がわからないことです。
CMake には本当に良いチュートリアルが欠けていると思います。
とにかく、私の CMake スクリプトは以下に添付されています。

どんな助けでも大歓迎です。
ありがとう、タル。

これが私のメインの CMake スクリプトです。

cmake_minimum_required(VERSION 2.8)

project(movie-night)

if (DEFINED PLATFORM)
    include(toolchains/ios.cmake)
endif()

add_definitions(-Wall)

set(DEBUG)

if (DEFINED DEBUG)
    add_definitions(-g)
endif()

if (DEFINED RELEASE)
    add_definitions(-O3)
endif()

add_subdirectory(engine)
add_subdirectory(ui)

add_subdirectory(test)

これが私のtoolchains/ios.cmakeファイルです:

set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR arm)
4

4 に答える 4

15

このツールチェーン ファイルを使用するだけです: http://code.google.com/p/ios-cmake/として使用します。

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file

次に、でCMakeLists.txt

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch armv7")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch armv7")
于 2012-09-27T23:17:38.173 に答える
11

cmake-toolchains のドキュメントに従って、私は以下のようにしました:

cmake -G Xcode -B build \
    -DCMAKE_SYSTEM_NAME=iOS \
    -DCMAKE_Swift_COMPILER_FORCED=true \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0

注: iOS を対象とする場合、この割り当てCMAKE_OSX_DEPLOYMENT_TARGET=11.0は間違いではありません。

于 2020-04-20T07:57:10.537 に答える