cmake - cmake 与 ccache 交叉编译时 ar 和 strip 不正确

标签 cmake cross-compiling ccache

我交叉编译了一个项目witch ccache:

cmake -G"Unix Makefiles" \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_TOOLCHAIN_FILE=mips64el-toolchain.cmake

下面是mips64el-toolchain.cmake:

SET (CMAKE_SYSTEM_NAME Linux)
SET (CMAKE_SYSTEM_PROCESSOR mips64el)

SET (CMAKE_C_COMPILER ccache mips64el-n64-linux-gnu-gcc)
SET (CMAKE_CXX_COMPILER ccache mips64el-n64-linux-gnu-g++)

# here is the target environment located
SET (CMAKE_FIND_ROOT_PATH 
     $ENV{HOME}/x-tools/mips64el-n64-linux-gnu/mips64el-n64-linux-gnu/sysroot)

# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

但我在 CMakeCache.txt 中发现了不正确的值:

CMAKE_AR:FILEPATH=/usr/bin/ar
CMAKE_STRIP:FILEPATH=/usr/bin/strip

ar 和 strip 不是交叉编译器。

如何正确设置?

一周前发现是cmake的bug,修复了

  • 模块/CMakeDetermineCCompiler.cmake
  • 模块/CMakeDetermineCXXCompiler.cmake

详情请见

https://launchpad.net/~likemartinma/+archive/devel

最佳答案

尝试设置 CMAKE_AR用于设置 ar 和 CMAKE_STRIP用于 CMAKE_TOOLCHAIN_FILE 中的 strip .

我正在使用 CMAKE_AR在我的一个项目中设置适当的 ar因为平台有多个 ar来自不同的供应商。

关于cmake - cmake 与 ccache 交叉编译时 ar 和 strip 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923395/

相关文章:

cmake - 为什么 nasm 找不到来自 cmake 的包含语句

CMake - 如何创建可执行文件,但不添加到 "all"目标?

cmake - 在 CMake 中从变量中剥离路径

linux - "Can' t解析符号的可能原因”?

gcc - 将 gcc 与 ccache 一起使用

CMake - 包含第三方文件

c++ - 无法将 C++ 项目与 openssl 静态库链接

linux - 如何修复此 libgcrypt 交叉编译错误?

c++ - 将clcache与Incredibuild一起使用

android - 编译 AOSP 8.1 时,Ccache 不会增长超过 1GB,最大大小 = 30GB