我正在编写一个需要ARM嵌入式工具链的CMake构建脚本。根据用户的OS和CPU体系结构,需要下载不同版本的工具包。当只区分操作系统时,这很好,因为我可以做如下事情:
if(WIN32)
# link to Windows version
elseif(APPLE)
# link to Apple version
elseif(LINUX)
# link to Linux version
但是,Apple Silicon的工具包与Intel MacBook不同,CMAKE_SYSTEM_PROCESSOR
和其他类似的变量似乎都是空的,所以它们没有用处,所以我无法区分Apple Silicon和Intel芯片。
有办法解决吗?
2条答案
按热度按时间nwlqm0z11#
你关于
CMAKE_SYSTEM_PROCESSOR
是空的,因此是无用的说法令人惊讶。类似这样的东西应该可以工作:也许更新您的CMAKE版本会有所帮助。
5n0oy7gb2#
Fabian的回答指出,我试图在调用
project()
之前读取CMAKE_SYSTEM_PROCESSOR
的值,此时CMake
将确定几个属性。因此,我编写了以下函数:
该函数利用
uname
命令,可以如下使用: