I am trying to do some crosscompilation using cmake. Some are easy with all the examples on Internet, I managed to crosscompile my library on Linux (x86 and ARM), Windows and Android. But now I would like to do it on a custom platform.
The process I need to achieve:
- Sourcing my environment (this destroy all previous bash classic environment)
- Compile with cmake
- Execute what I want
But Cmake is testing for symbols in my custom C/C++ libraries which make my library unable to compile. The errors I have are that cmake some versions of GLIBCXX and CXXABI (no C issues) but not all of them.
Is there a way to make cmake ok with it ?
EDIT:
I tried using:
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
And with:
include(CMakeForceCompiler)
...
cmake_force_c_compiler(${ENV_PATH}/bin/${CC})
cmake_force_cxx_compiler(${ENV_PATH}/bin/${CXX})
But cmake is still checking for symbols.
Without having your environment nor the error message it's not easy to tell the actual root cause but here are two of the common causes and respective fixes:
If you don't have a complete toolchain file created for your custom environment - so CMake can't link a simple test program - you can try the relatively new (version 3.6) global CMake variable named
CMAKE_TRY_COMPILE_TARGET_TYPE
.So just add the following:
Then CMake would just try to build a static library.
To have only the most common GCC compiler variables set and have only some basic checks, try:
See CMake Cross Compiling: Setting up the system and toolchain:
References