交叉编译 - 检索目标CPU和版本

时间:2013-05-14 18:31:45

标签: cmake cross-compiling

我正在使用cmake对VxWorks进行交叉编译。当我第一次运行cmake时,我必须提供有关编译器,目标操作系统等的信息。

在交叉编译对话框中,我设置了三个目标系统设置:

  1. 操作系统
  2. 版本
  3. 处理器
  4. (其次是编译器等)

    虽然我可以使用CMAKE_SYSTEM_NAME检索第一个,但我无法获得版本和处理器。 两者都返回一个空字符串。

    以下是一个例子:

    MESSAGE("CMAKE_SYSTEM_PROCESSOR:   ${CMAKE_SYSTEM_PROCESSOR}")
    MESSAGE("CMAKE_SYSTEM_VERSION:   ${CMAKE_SYSTEM_VERSION}")
    

    输出:

    CMAKE_SYSTEM_PROCESSOR:   
    CMAKE_SYSTEM_VERSION:  
    

    我的Cmake版本是 2.8.10.2 ,目标操作系统是VxWorks(如果这很重要 - 编译器是WindRiver GNU)。

    如何获得我在开始时设置的版本和处理器?或者,如果我交叉编译到cmake未知的操作系统,这是不可能的吗?

    (顺便说一句。编译工作正常)

1 个答案:

答案 0 :(得分:0)

到目前为止,这似乎是不可能的。我一直都是空字符串。

然而,有一个可行的解决方案,我想这是更好的方法:

之前:

我指定了交叉编译设置(编译器和目标系统,参见问题),然后它运行在CMake列表中的VxWorks特定部分(使用if( VxWorks )检查以确保它不被执行当使用其他系统时。)

现在(解决方案)

我为VxWorks和所需的处理器编写了 工具链文件 平台文件

<强>缺点:

  • 我必须写一些额外的文件:
    • 工具链文件
    • VxWorks的平台文件
    • 每个处理器的更多平台文件(以及处理器类型, Gnu Diab

<强>优点:

  • CMake列表现在更清洁
  • 单独的项目和目标设置
  • 单独的系统和处理器设置 - 以非常清晰的方式添加新处理器,但保持系统设置
  • 我在工具链文件中写了一些设置,CMake加载了相关的系统/处理器设置
  • ...