Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 交叉编译-检索目标CPU和版本_Cmake_Cross Compiling - Fatal编程技术网

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

Cmake 交叉编译-检索目标CPU和版本,cmake,cross-compiling,Cmake,Cross Compiling,我正在使用cmake交叉编译VxWorks。当我第一次运行cmake时,我必须提供有关编译器、目标操作系统等的信息 在交叉编译对话框中,我设置了三个目标系统设置: 操作系统 版本 处理器 (后面是编译器等) 虽然我可以使用CMAKE\u SYSTEM\u NAME检索第一个,但无法获取版本和处理器。 两者都返回一个空字符串 下面是一个例子: MESSAGE("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") MESSAGE("CMAKE_

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

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

  • 操作系统
  • 版本
  • 处理器
  • (后面是编译器等)

    虽然我可以使用
    CMAKE\u SYSTEM\u 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列表中的VxWorks特定部分上运行(使用
    if(VxWorks)
    进行检查,以确保在使用其他系统时不会执行)

    现在(解决方案): 我为VxWorks和所需处理器编写了工具链文件和平台文件

    缺点:

    CMAKE_SYSTEM_PROCESSOR:   
    CMAKE_SYSTEM_VERSION:  
    
    • 我必须写一些额外的文件:
      • 工具链文件
      • VxWorks平台文件
      • 每个处理器的其他平台文件(以及处理器类型、Gnu和DIB)
    优点:

    CMAKE_SYSTEM_PROCESSOR:   
    CMAKE_SYSTEM_VERSION:  
    
    • CMake列表现在干净多了
    • 单独的项目和目标设置
    • 独立的系统和处理器设置-易于以非常清晰的方式添加新处理器,但保留系统设置
    • 我在工具链文件中写入一些设置,CMake加载相关的系统/处理器设置