gpt4 book ai didi

CMAKE_SYSTEM_PROCESSOR 似乎是空的。与操作系统无关的最佳策略是什么?

转载 作者:行者123 更新时间:2023-12-03 09:00:22 25 4
gpt4 key购买 nike

我正在尝试根据处理器类型设置一堆 CXX 标志。

IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAMD64")
ELSE()
STRING(FIND ${CMAKE_SYSTEM_PROCESSOR} "86" 86_res)
IF(${86_res} EQUAL -1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIA32")
ENDIF()
STRING(FIND ${CMAKE_SYSTEM_PROCESSOR} "arm" arm_res)
IF(${arm_res} EQUAL -1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DARM")
ENDIF()
ENDIF()

但无论出于何种原因,CMAKE_SYSTEM_PROCESSOR 为空并且无法运行 STREQUAL 比较。为什么这是空的?

现在我通过运行来设置它

EXEC_PROGRAM(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR)

但这在 Windows 上不起作用,所以我不确定我应该在这里做什么。

最佳答案

必须在使用PROJECT(...)设置项目名称之后使用该宏。

MESSAGE("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") # EMPTY!
PROJECT(dummy)
MESSAGE("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") # OK!

输出:

1> CMAKE_SYSTEM_PROCESSOR:
1>-- Selecting Windows SDK version...
1> CMAKE_SYSTEM_PROCESSOR: AMD64

可以通过 toolchains 来分配启用交叉编译时。

关于CMAKE_SYSTEM_PROCESSOR 似乎是空的。与操作系统无关的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51024294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com