4

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

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

4

1 回答 1

0

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

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

前:

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

现在(解决方案)

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

缺点:

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

优点:

  • CMake 列表现在更干净了
  • 单独的项目和目标设置
  • 分离系统和处理器设置 - 以非常清晰的方式轻松添加新处理器,但保留系统设置
  • 我在工具链文件中编写了一些设置,CMake 加载了相关的系统/处理器设置
  • ...
于 2013-05-29T18:11:48.733 回答