如何部分禁用cmake C / C ++自定义编译器检查

我正在尝试使用cmake进行一些交叉编译。 有些很容易通过Internet上的所有示例,我设法在Linux(x86和ARM),Windows和Android上交叉编译我的库。 但现在我想在自定义平台上进行。

我需要实现的过程:

  1. 采购我的环境(这会摧毁所有以前的bash经典环境)
  2. 用cmake编译
  3. 执行我想要的

但是Cmake正在测试我的自定义C / C ++库中的符号,这使得我的库无法编译。 我遇到的错误是cibke某些版本的GLIBCXX和CXXABI(没有C问题),但不是全部。

有没有办法使cmake好吗?

编辑:

我试过用:

set(CMAKE_C_COMPILER_WORKS TRUE) set(CMAKE_CXX_COMPILER_WORKS TRUE) 

与:

 include(CMakeForceCompiler) ... cmake_force_c_compiler(${ENV_PATH}/bin/${CC}) cmake_force_cxx_compiler(${ENV_PATH}/bin/${CXX}) 

但是cmake仍在检查符号。

没有您的环境或错误消息,告诉实际的根本原因并不容易,但这里有两个常见原因和相应的修复:

  1. 如果您没有为自定义环境创建完整的工具链文件 – 因此CMake无法链接简单的测试程序 – 您可以尝试名为CMAKE_TRY_COMPILE_TARGET_TYPE的相对较新的(版本3.6)全局CMake变量。

    所以只需添加以下内容:

     set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) 

    然后CMake将尝试构建一个静态库。

  2. 要仅设置最常见的GCC编译器变量并且只进行一些基本检查,请尝试:

     SET(CMAKE_SYSTEM_NAME Generic) 

    请参阅CMake交叉编译:设置系统和工具链 :

    如果您的目标是没有OS的嵌入式系统,则将CMAKE_SYSTEM_NAME设置为“Generic”

参考

  • CMake AMRCC +自定义链接器
  • 使用特定链接器的cmake交叉编译不会将参数传递给armlink