我正在使用cmake交叉编译VxWorks。当我第一次运行cmake时,我必须提供有关编译器,目标操作系统等的信息。
在交叉编译对话框中,我设置了三个目标系统设置:
- 操作系统
- 处理器
(后面跟着编译器等)
虽然我可以使用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列表中的VxWorks特定部分(与if( VxWorks )
检查以确保在使用其他系统时不执行)。
我为VxWorks和所需的处理器编写了工具链文件和平台文件。
缺点:
- 我必须写一些额外的文件:
- 工具链文件
- VxWorks平台文件
- 每个处理器(和处理器类型,Gnu和Diab)的进一步平台文件
优点:
- 分隔项目和目标设置
- 单独的系统和处理器设置-很容易添加新的处理器在一个非常清晰的方式,但保持系统设置 我在工具链文件中写了一些设置,CMake加载了相关的系统/处理器设置
- …