私はアンドロイドndk13bから作られたスタンドアロンのツールチェーンを使用しています。それはうまく動作しますが、すべてのツール(リンカー、アーカイバなど)を見つけるために、ツールチェーンファイルにかなり詳細なセクションがあります。 凝縮させる方法はありますか?動作しませんでした何Cmakeクロスコンパイル:ツールを見つける
SET(COMPILER_PATH "<path_to_my_llvm_directory>")
SET(CMAKE_TOOLCHAIN_PREFIX aarch64-linux-android-) #In theory should allow to find minor tools like ar and objdump, see http://stackoverflow.com/a/7032021/2436175
find_program(CMAKE_C_COMPILER clang.cmd PATH ${COMPILER_PATH})
find_program(CMAKE_CXX_COMPILER clang++.cmd PATH ${COMPILER_PATH})
find_program(CMAKE_AR ${CMAKE_TOOLCHAIN_PREFIX}ar.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_RANLIB ${CMAKE_TOOLCHAIN_PREFIX}ranlib.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_LINKER ${CMAKE_TOOLCHAIN_PREFIX}ld.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_NM ${CMAKE_TOOLCHAIN_PREFIX}nm.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_OBJCOPY ${CMAKE_TOOLCHAIN_PREFIX}objcopy.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_OBJDUMP ${CMAKE_TOOLCHAIN_PREFIX}objdump.exe PATHS ${COMPILER_PATH})
find_program(CMAKE_STRIP ${CMAKE_TOOLCHAIN_PREFIX}strip.exe PATHS ${COMPILER_PATH})
:
- 明示的
find_program
を使用していない - >それは、${COMPILER_PATH}
にCMAKE_FIND_ROOT_PATH
の設定 - 私の道に私が持っているいくつかの他のmingwのツールチェーンからいくつかの他のツールを見つけました。その時点でコンパイラを見つけることさえできません。
find_program
を見つけ注意を私は(++打ち鳴らすために同じ)
SET(CMAKE_C_COMPILER ${COMPILER_PATH}/clang.cmd)
で代わりにコンパイラを設定することであることを回避することができますが、それはまだ
find_program
と様々なフラグをしようとする他のツール
ONLY_CMAKE_FIND_ROOT_PATH
例えば、以下は動作しませんので、ツールを見つけるための唯一の回避策も: SET(CMAKE_AR ${COMPILER_PATH}/${CMAKE_TOOLCHAIN_PREFIX}ar.exe
(アーカイブ操作が失敗し、私は、変数が設定されていませんcmakeの-GUIから見ることができます)。
'... cmake-guiから変数が設定されていないことが分かります。 ' - ' cmake-gui'は*キャッシュされた変数のみを表示します。 'SET(CMAKE_AR ... CACHE PATH" Archiver ")'を使うことができます。 – Tsyvarev
「凝縮させる方法はありますか?」それに幸運。 Cmakeは素晴らしいツールですが、構文と言語の振る舞いはゴミです。キットウェアがPythonで書かなかったのは本当に残念です(IMHO)。( –
@RichardHodges私はPythonを持っていますが、私たちのソフトウェアを構築できるという理由だけで私の同僚にインストールするように頼んだのは、私たちの人生を楽にしてくれませんでした – Antonio