2016-08-01 83 views
0

我想用cmake做一些交叉編譯。一些在互聯網上的所有示例都很容易,我設法在Linux(x86和ARM),Windows和Android上交叉編譯我的庫。但是現在我想在一個定製平臺上完成它。如何部分禁用cmake C/C++自定義編譯器檢查

的過程中,我需要實現:

  1. 採購我的環境(這銷燬所有以前的bash的經典環境)
  2. 編譯cmake的
  3. 執行我想要什麼

但CMake的正在測試我的自定義C/C++庫中的符號,這些符號使我的庫無法編譯。我有的錯誤是cmake 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的還是檢查符號。

+0

嘗試獲得最新的CMake的,它具有以來3.5版本的交叉編譯了很多改進 – zaufi

回答

0

而不必環境也不是不容易分辨實際的根本原因,但這裏有兩個常見的原因和相應的修復錯誤消息:

  1. 如果你沒有一個完整的toolchain file創建爲您的自定義環境 - 所以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 Cross Compiling: Setting up the system and toolchain

    如果你的目標是無需OS設定嵌入式系統CMAKE_SYSTEM_NAME到「Generic」

參考