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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
我可以在CmakeList中使用工具链文件中定义的CMAKE_SYSTEM_处理器吗? < >我想把RasBuriPi作为交叉编译目标添加到使用CMAGE的C++项目中。根据问题的公认答案,我已经成功地设置了环境_C++_Cmake_Arm_Raspberry Pi_Cross Compiling - Fatal编程技术网

我可以在CmakeList中使用工具链文件中定义的CMAKE_SYSTEM_处理器吗? < >我想把RasBuriPi作为交叉编译目标添加到使用CMAGE的C++项目中。根据问题的公认答案,我已经成功地设置了环境

我可以在CmakeList中使用工具链文件中定义的CMAKE_SYSTEM_处理器吗? < >我想把RasBuriPi作为交叉编译目标添加到使用CMAGE的C++项目中。根据问题的公认答案,我已经成功地设置了环境,c++,cmake,arm,raspberry-pi,cross-compiling,C++,Cmake,Arm,Raspberry Pi,Cross Compiling,该项目已经有许多构建目标,所有这些目标都以一种非常丑陋的方式在主CMakeLists.txt中定义(这是一个旧项目)。在此文件中,根据CMAKE_SYSTEM_处理器变量,设置了一些编译器标志,例如: if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm") # do something endif () 根据,我应该在我的Raspberry工具链文件中设置它。我已经添加了SET(CMAKE\u SYSTEM\u PROCESSOR arm),但是我无

该项目已经有许多构建目标,所有这些目标都以一种非常丑陋的方式在主CMakeLists.txt中定义(这是一个旧项目)。在此文件中,根据CMAKE_SYSTEM_处理器变量,设置了一些编译器标志,例如:

if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")
    # do something
endif ()
根据,我应该在我的Raspberry工具链文件中设置它。我已经添加了
SET(CMAKE\u SYSTEM\u PROCESSOR arm)
,但是我无法从CMakeLists访问它,因为它在那里变成了一个空字符串。我对其他变量没有这个问题,比如CMAKE_SYSTEM_NAME。通过使用
message()
,我可以看到它在工具链文件中仍然可用,但之后变为空

有没有办法在CMakeLists.txt中使用CMAKE_SYSTEM_处理器?或者,它是否仅在工具链文件中可用


我正在使用CMake 2.8.12.2。

看起来你是CMake的受害者。请尝试使用此选项:

if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
    # do something
endif ()

看来这毕竟是一个缓存问题——在一个干净的目录中构建解决了这个问题。尽管我仍然想知道它是如何变成一个空字符串的…

这对我来说不起作用,变量仍然是空的。你真的加载了工具链文件吗?我建议您使用cmake gui从干净的构建目录生成项目:它会提示您在第一次配置时是否要使用工具链。干净的构建解决了此问题,谢谢!工具链文件已正确加载,但看起来像是CMake缓存了以前的变量。可能是因为您在第一次使用CMake top_dir/CMakeLists.txt时未指定工具链文件。