我可以在CmakeList中使用工具链文件中定义的CMAKE_SYSTEM_处理器吗? < >我想把RasBuriPi作为交叉编译目标添加到使用CMAGE的C++项目中。根据问题的公认答案,我已经成功地设置了环境
该项目已经有许多构建目标,所有这些目标都以一种非常丑陋的方式在主CMakeLists.txt中定义(这是一个旧项目)。在此文件中,根据CMAKE_SYSTEM_处理器变量,设置了一些编译器标志,例如:我可以在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),但是我无
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时未指定工具链文件。