【问题标题】:Cross-compiling - retrieve target CPU and version交叉编译 - 检索目标 CPU 和版本
【发布时间】:2013-05-09 03:42:38
【问题描述】:

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

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

  1. 操作系统
  2. 版本
  3. 处理器

(后跟编译器等)

虽然我可以使用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 未知的操作系统,这是不可能的吗?

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

【问题讨论】:

    标签: cmake cross-compiling


    【解决方案1】:

    目前看来这是不可能的。我总是得到空字符串。

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

    之前:

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

    现在(解决方案)

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

    缺点:

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

    优点:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多