我交叉编译了一个项目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
详情请见
最佳答案
尝试设置 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/