我正在使用由android 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
- >它发现从其他MinGW的工具链,我有我的路 - 设置
CMAKE_FIND_ROOT_PATH
到${COMPILER_PATH}
一些其他的工具。它甚至不会在那个时候找到编译器。我可以变通方法,通过与SET(CMAKE_C_COMPILER ${COMPILER_PATH}/clang.cmd)
设置编译器,而不是(同为铛++),但它仍然没有找到其他工具 - 尝试各种标志与
find_program
,尤其是ONLY_CMAKE_FIND_ROOT_PATH
需要注意的是,我发现find_program
到要找到这些工具的唯一的解决方法,因为例如下面的不会起作用:
SET(CMAKE_AR ${COMPILER_PATH}/${CMAKE_TOOLCHAIN_PREFIX}ar.exe
(归档操作将失败,我可以从该变量没有设置cmake的桂见)。
'...我可以从cmake的桂该变量不set'看 - 'cmake的-gui'只显示*高速缓存*变量。您可以使用'SET(CMAKE_AR ... CACHE PATH“Archiver”)'。 – Tsyvarev
“有没有办法让它更浓缩?”祝你好运。 Cmake是一个很棒的工具,但是语法和语言行为是垃圾。这是一个真正的耻辱(恕我直言)是kitware没有把它用Python语言编写:( –
@RichardHodges我有蟒蛇,但要求全体同仁来安装它只是为了能够建立我们的软件不会使我们的生活更轻松。并作出“完全独立”的计划了蟒蛇是不平凡的。 – Antonio