我想将Raspberry Pi作为交叉编译目标添加到使用CMake的C ++项目中。根据{{3}}问题的已接受答案,我已成功设置了环境。
该项目已经有许多构建目标,所有这些目标都以非常丑陋的方式在主CMakeLists.txt中定义(这是一个旧项目)。在此文件中,根据CMAKE_SYSTEM_PROCESSOR变量设置了一些编译器标志,例如:
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")
# do something
endif ()
根据this,我应该在我的Raspberry工具链文件中设置它。我添加了SET(CMAKE_SYSTEM_PROCESSOR arm)
,但是我无法从CMakeLists访问它,因为它在那里变成了一个空字符串。我对其他变量没有这个问题,比如CMAKE_SYSTEM_NAME。使用message()
,我可以看到它在工具链文件中仍然可用,但在此之后变为空。
有没有办法在CMakeLists.txt中使用CMAKE_SYSTEM_PROCESSOR?或者,它是否仅在工具链文件中有意使用?
我正在使用CMake 2.8.12.2。
答案 0 :(得分:0)
看起来你已成为CMake double expansion的受害者。请尝试使用此代码:
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
# do something
endif ()